同一のロジックと思われるものをコピーしていますが、私のモデルの 1 つでは機能しません。
調査では、私は持っています
意見
<% @surveys.each do |survey| %>
...
<%= link_to 'Delete', survey, :confirm => 'Are you sure?', :method => :delete %>
<% end %>
コントローラ
def destroy
@survey = Survey.find(params[:id])
@survey.destroy
respond_to do |format|
format.html { redirect to '/' }
format.json { head :no_content }
end
end
削除機能は正常に動作します。
それでも問題はありますが、私は持っています
意見
<% @questions.each do |question| %>
...
<%= link_to 'Delete', question, :confirm => 'Are you sure?', :method => :delete %>
<% end %>
コントローラ
def destroy
@survey = Survey.find(params[:survey_id])
@question = Question.find(params[:id])
@question.destroy
respond_to do |format|
format.html { redirect to @survey }
format.json { head :no_content }
end
end
これは私にエラーを与えます:
undefined method `question path' for #<#<Class:0x008ff2534....
を削除するとlink_to
、正常に取得question
され、そのプロパティが機能します。
私の見解のロジックをより具体的なものに変更し、
<%= link_to "Delete", :controller => "questions", :action => "destroy", :id => question.id %>
より具体的なエラーが発生します。
No route matches {:controller=>"questions", :action=>"destroy", :id=>1}
を実行rake routes
すると、パスが存在することが確認されます。
DELETE /surveys/:survey_id/questions/:id(.:format) questions#destroy
そして、ここに私のroutes.rbエントリがあります:
devise_for :users do
resources :surveys do
resources :questions do
resources :responses
end
end
end
コンピューターは間違いを犯さないのに、私は何を間違えたのでしょうか?