2

Railsアプリケーションに、このようにネストされたリソースにルートを追加しました。

 resources :questions do 
    resources :answers do 

       match "/bestanswer", :to => "answers#bestanswer", :via => :post

      end
  end 

「rakeroutes」を実行すると、次のパスが表示されます

question_answer_bestanswer POST   /questions/:question_id/answers/:answer_id/bestanswer(.:format) answers#bestanswer

このような形式(回答ごとに何度も繰り返される)でパスを使用しようとしました

<%= form_tag question_answer_bestanswer_path, method: :post do%>
   <%= hidden_field_tag :answer_id, answer.id %>
   <%= hidden_field_tag :question_id, answer.question.id %>
   <%= submit_tag "Accept this answer as the best answer", :class => 'btn ' %>
<% end %> 

ただし、このフォームが表示されているページに移動すると、このエラーが発生します

No route matches {:controller=>"answers", :action=>"bestanswer"}

私が間違ったことを説明できますか?

4

1 に答える 1

1

ルートパラメータがありません。フォームは次のようになります。

<%= form_tag question_answer_bestanswer_path( answer.question, answer ), method: :post do%>
   <%= submit_tag "Accept this answer as the best answer", :class => 'btn ' %>
<% end %>

そして、hidden_field_tag'は必要ありません。

于 2013-03-25T02:41:35.940 に答える