0

わかりました、これについて助けが必要です。非標準のアクションでリソースを定義しました。では次のようになり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"}
...

LibImport モデルのインデックス ビューで名前付きルート「reimport_lib_import」を使用しようとしています。その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 を使用しようとすると、なぜ Rails が文句を言うのreimport_lib_importですか? 前の路線では問題なく通過しているのに、この路線ではつまずくという事実に、lib_import私はかなり戸惑いました。何かアイデアはありますか?

4

1 に答える 1

1

使用する必要があります

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

生成された(表示された)名前は、相対パスまたは完全なURLのrake routes後に続く必要があります。次に、それがメンバーパスである場合は、メンバー(この場合はそれ自体)を指定する必要があります。_path_urllib_import

お役に立てれば。

于 2011-11-25T08:50:50.670 に答える