循环中的路径助手

时间:2011-09-27 05:59:02

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个:has_many条的Foo。 GET Foo#index显示所有条形图。视图看起来像这样:

<% @foos.each do |foo| %>
    <% foo.bars.each do |bar| %>
        <%= link_to 'Download', download_bar_path %>
        <%= link_to 'New', new_bar_path( :foo => foo.id ) %>
    <% end %>
<% end %>

Bars控制器和路由中有def download

resources :bars do
    member do
        get 'download'
    end
end

rake routes显示

download_bar GET    /bars/:id/download(.:format)     {:action=>"download", :controller=>"bars"}

和网址/bars/1/download确实有效,但视图中的第一个链接(download_bar_path)却没有。它说No route matches {:action=>"download", :controller=>"bars"}

可能是什么问题?

2 个答案:

答案 0 :(得分:2)

<% @foos.each do |foo| %>
  <% foo.bars.each do |bar| %>
    <%= link_to 'Download', [:download, bar] %>
    <%= link_to 'New', [:new, :bar] %>
  <% end %>
<% end %>

答案 1 :(得分:1)

您没有指定要下载的栏,您需要通过更改此行来添加它

<%= link_to 'Download', download_bar_path(bar) %>