我已经到处问过这个问题,但是似乎根本没有理由,我不知道如何在rails中路由自定义方法。
快速概述:我构建了一个小型应用程序,并生成了一个名为Answers的支架。当我生成支架时,它会自动在controller文件夹中获取answers_controller.rb并在视图中获取Answers文件夹。
在Answers_controller中,我添加了一种称为random的自定义方法。整个Answers_controller如下:
class AnswersController < ApplicationController
before_action :set_answer, only: [:show, :edit, :update, :destroy]
def index
@answers = Answer.all
end
def show
end
def random
end
def new
@answer = Answer.new
end
def edit
end
def create
@answer = Answer.new(answer_params)
respond_to do |format|
if @answer.save
format.html { redirect_to @answer, notice: 'Answer was successfully created.' }
format.json { render :show, status: :created, location: @answer }
else
format.html { render :new }
format.json { render json: @answer.errors, status: :unprocessable_entity }
end
end
end
# DELETE /answers/1
# DELETE /answers/1.json
def destroy
@answer.destroy
respond_to do |format|
format.html { redirect_to answers_url, notice: 'Answer was successfully destroyed.' }
format.json { head :no_content }
end
结尾
在我的views / answers文件夹中,我创建了一个名为random.html.erb的文件夹,其中仅包含html h1标签。在我的路线文件中,我具有以下内容:
Rails.application.routes.draw do
resources :answers
# this should work, why doesn't it???
resources :answers do
collection do
get :random
end
end
root to: 'dashboard#index'
end
互联网上的每个资源都说这是做到这一点的方法,但是当我运行localhost:3000 / random时,我只会遇到路由错误。我包括了文件结构的图片,但是对于我自己的一生,我不知道为什么这不起作用。
另一种方法是:
get '/random/', to: 'answers#random', as: 'random'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句