好的,我需要这个帮助。我用非标准的行动来定义资源。它看起来像这样在config/routes.rb
:添加动作的命名路由不被识别
1 Upload::Application.routes.draw do
2
3 resources :lib_imports, :only => [:index, :new, :create, :show] do
4 get 'reimport', :on => :member
5 end
...
我可以看到我希望,当我运行rails routes
$ rake routes
reimport_lib_import GET /lib_imports/:id/reimport(.:format) {:action=>"reimport", :controller=>"lib_imports"}
lib_imports GET /lib_imports(.:format) {:action=>"index", :controller=>"lib_imports"}
new_lib_import GET /lib_imports/new(.:format) {:action=>"new", :controller=>"lib_imports"}
edit_lib_import GET /lib_imports/:id/edit(.:format) {:action=>"edit", :controller=>"lib_imports"}
lib_import GET /lib_imports/:id(.:format) {:action=>"show", :controller=>"lib_imports"}
...
我试图使用命名路线“reimport_lib_import”中的索引视图的路线LibImport模型,index.html.erb
,其中有一部分是这样的:
...
10 <% @lib_imports.each do |lib_import| %>
11 <tr>
12 <td><%= lib_import.spreadsheet %></td>
13 <td><%= link_to 'Show', lib_import %></td>
14 <td><%= link_to 'Re-import', reimport_lib_import %></td>
15 </tr>
16 <% end %>
...
然而,其结果是,浏览器显示错误。错误的相关部分是:
Showing /home/mike/rails_projects/experiments/upload/app/views/lib_imports/index.html.erb where line #14 raised:
undefined local variable or method `reimport_lib_import' for #<#<Class:0x007fa938a06778>:0x007fa938950720>
Extracted source (around line #14):
11: <tr>
12: <td><%= lib_import.spreadsheet %></td>
13: <td><%= link_to 'Show', lib_import %></td>
14: <td><%= link_to 'Re-import', reimport_lib_import %></td>
15: </tr>
16: <% end %>
17: </table>
我的问题是:为什么Rails的抱怨reimport_lib_import
当我尝试使用它呢?事实上,它在前一行航行了lib_import
而没有抱怨,但这次旅行让我颇为疑惑任何人有任何想法?
是否使用'reimport_lib_import_url'而不是'reimport_lib_import'改变任何东西?我有点生锈与Rails 2. –
reimport_lib_import_url或reimport_lib_import_path应该工作。如果您再次遇到错误,请告诉我。 –
德文和Bhushan,你是对的。感谢您的评论。 Devin我正在使用Rails 3,但很好奇:在我的问题中,是什么让你认为它是Rails 2?我在做Rails 3中过时的东西吗? –