Rails中带有form_tag的AbstractController :: ActionNotFound

时间:2019-06-22 09:14:38

标签: ruby-on-rails ruby-on-rails-5 erb

当我按以下方式使用form_tag时,会出现此错误:

  

AbstractController :: ActionNotFound位于/ quizzes / [thatever_quiz_id]

     

对于QuizzesController找不到操作“ thatever_quiz_id”

我的代码如下:

erb文件

<%= form_tag action: :add_questions  do %>
  <%= collection_select(:quiz, :id, Quiz.where.not(id: params[:id]), :name, :id, prompt: 'Select Quiz') %>
  <%= text_field_tag(:input_quiz_questions, 'Question ids') %>
  <%= submit_tag "Add" %>
<% end %>

因此,我在QuizController中有一个名为add_questions的方法,该方法从另一个测验中选择一个问题并将其添加到当前测验中。

def add_questions
  id = params[:id]
  required_quiz_id = params[:quiz][:id].to_i #taken from collection_select
  required_questions_ids = params[:input_quiz_questions].split().map { |s| s.to_i } #taken from text_field_tag
  # remaining logic here

路线

resources :quizzes, as: 'tests' do
  member do
    get :add_questions
  end
end

那我为什么在这里遇到上述错误,该如何纠正呢?

1 个答案:

答案 0 :(得分:0)

您应该在form_tag之后写上网址,而不是在选项哈希中写上动作的名称

strings.xml