Form_to @object路由问题

时间:2014-01-03 02:52:43

标签: ruby-on-rails ruby-on-rails-4 rails-routing

我有一个自定义路由指向我的控制器中的一个方法来更新部分视图,但我收到路由错误。

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看看我会遇到什么样的问题,是有不同的方法吗?

1 个答案:

答案 0 :(得分:0)

请参阅http://guides.rubyonrails.org/routing.html#resources-on-the-web的第2.10.1节以了解您的路线声明的结果。在您的情况下,路径answer_problem_exam_path被定义为路由声明的结果,但您尝试使用answer_problem_path