我有一个自定义路由指向我的控制器中的一个方法来更新部分视图,但我收到路由错误。
ActionController::UrlGenerationError in Exams#show
Showing /home/tom/rails/oplei/app/views/exams/_quiz.html.erb where line #12 raised:
No route matches {:action=>"answer_problem_path", :id=>"102", :controller=>"exams"}
我的自定义路线如下:
resources :exams do
get 'answer_problem'
end
这应该指向我的Exams控制器中的一个方法。
应用程序/控制器/ exams_controller:
def answer_problem
@answered = @facts[params[:fIndex].to_i]
if @answered.id == params[:answer].to_i
#answered correctly
@resultText = "Correct!"
else
#incorrect answer
@resultText = "Incorrect :("
end
#@currentFact = @facts[@answered.id + 1]
@currentFact = @facts[params[:fIndex].to_i + 1]
if @currentFact == @facts.last
@endOfArray = 'yes'
else
@endOfArray = 'no'
end
@choices = Fact.where(question_type: @currentFact.question_type).where.not(id: @currentFact.id).
order('RANDOM()').limit(3)
@choices.push(@currentFact)
@choices.shuffle!
end
(我知道,这个动作在商店里有重大的重构。)
我将使用以下form_for来调用它:
<%= form_for(@exam, url: {action: 'exam_answer_problem_path'}, remote: true) do |f| %>
<%= hidden_field_tag 'answer', choice.id %>
<%= hidden_field_tag 'fIndex', @facts.index(@currentFact) %>
<%= f.submit choice.answer, class: "btn btn-default btn-answer", id: "answerButton" %>
<% end %>
玩了几个小时后,我仍然无法弄清楚这个路由错误的来源,我甚至没有找到form_for看看我会遇到什么样的问题,是有不同的方法吗?
答案 0 :(得分:0)
请参阅http://guides.rubyonrails.org/routing.html#resources-on-the-web的第2.10.1节以了解您的路线声明的结果。在您的情况下,路径answer_problem_exam_path
被定义为路由声明的结果,但您尝试使用answer_problem_path
。