Названный маршрут для добавленного действия не распознан - PullRequest
0 голосов
/ 25 ноября 2011

Хорошо, мне нужна помощь с этим.Я определил ресурс с нестандартными действиями.Это выглядит следующим образом: 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 без каких-либо жалоб, но спотыкается об эту, меня весьма озадачил. У кого-нибудь есть идеи?

1 Ответ

1 голос
/ 25 ноября 2011

Вы должны использовать

<td><%= link_to 'Show', lib_import_path(lib_import) %></td>
<td><%= link_to 'Re-import', reimport_lib_import_path(lib_import) %></td>

За именами, сгенерированными (показанными) в rake routes, должен следовать _path для относительного пути или _url для полного URL. Во-вторых, если это путь члена, вам нужно указать член, в данном случае: lib_import себя.

Надеюсь, это поможет.

...