Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 已确认(看似)现有路由的路由错误_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 已确认(看似)现有路由的路由错误

Ruby on rails 已确认(看似)现有路由的路由错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,我复制的似乎是相同的逻辑,但它不适用于我的一个模型 在调查中,我有 查看 <% @surveys.each do |survey| %> ... <%= link_to 'Delete', survey, :confirm => 'Are you sure?', :method => :delete %> <% end %> <% @questions.each do |question| %> ... <%=

我复制的似乎是相同的逻辑,但它不适用于我的一个模型

在调查中,我有

查看

<% @surveys.each do |survey| %>
  ...
  <%= link_to 'Delete', survey, :confirm => 'Are you sure?', :method => :delete %>
<% end %>
<% @questions.each do |question| %>
  ...
  <%= link_to 'Delete', question, :confirm => 'Are you sure?', :method => :delete %>
<% end %>
删除功能工作正常

但问题是,我有

查看

<% @surveys.each do |survey| %>
  ...
  <%= link_to 'Delete', survey, :confirm => 'Are you sure?', :method => :delete %>
<% end %>
<% @questions.each do |question| %>
  ...
  <%= link_to 'Delete', question, :confirm => 'Are you sure?', :method => :delete %>
<% end %>
这给了我一个错误:

  undefined method `question path' for #<#<Class:0x008ff2534....
我得到一个更具体的错误

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

计算机不会出错,那么我做错了什么?

问题
是嵌套资源,因此您还应该将
调查
传递到路径:

<%= link_to 'Delete', [@survey, question], :confirm => 'Are you sure?', :method => :delete %>
“你确定吗?”,:method=>:delete%>

假设您已经设置了
@survey
变量

问题
是嵌套的资源,因此您还应该将
调查
传递到路径:

<%= link_to 'Delete', [@survey, question], :confirm => 'Are you sure?', :method => :delete %>
“你确定吗?”,:method=>:delete%>

假设您已经设置了
@survey
变量

问题是调查中的嵌套资源,所以您的路线需要反映这一点。请注意,在rake routes输出中,有一个
:survey_id
参数作为路由的一部分。这是必需的。因此,您的链接需要如下所示:

<%= link_to "Delete", :controller => "questions", :action => "destroy", :survey_id => @survey.id, :id => question.id %>
“问题”,“行动=>“销毁”,“调查”\u id=>@survey.id,:id=>question.id%>
或者,您可以使用Marek的路径,为问题资源命名:

<%= link_to 'Delete', [@survey, question], :confirm => 'Are you sure?', :method => :delete %>
“你确定吗?”,:method=>:delete%>

问题是调查中的嵌套资源,因此您的路线需要反映这一点。请注意,在rake routes输出中,有一个
:survey_id
参数作为路由的一部分。这是必需的。因此,您的链接需要如下所示:

<%= link_to "Delete", :controller => "questions", :action => "destroy", :survey_id => @survey.id, :id => question.id %>
“问题”,“行动=>“销毁”,“调查”\u id=>@survey.id,:id=>question.id%>
或者,您可以使用Marek的路径,为问题资源命名:

<%= link_to 'Delete', [@survey, question], :confirm => 'Are you sure?', :method => :delete %>
“你确定吗?”,:method=>:delete%>

您的控制器是否位于命名空间中?您是否需要-:controller=>“调查/问题”?问题确实属于我的应用程序中的调查,但这样更改代码不起作用。您的控制器是否位于命名空间中?您是否需要-:controller=>“调查/问题”?问题确实属于我的应用程序中的调查,但这样更改代码不起作用。