使用命名路由使用匹配路由格式生成简单链接

时间:2013-02-02 20:24:11

标签: ruby ruby-on-rails-3 routes link-to

以下是我写的路线:

Foo::Application.routes.draw do
  get "home/index"

  match "/ads/:category_name" => "ads#by_category"
  match "/ads/:category_name/:id" => "ads#show"

  resources :ads

  root :to => 'home#index'
end

在我的一个共享视图中,我编写了一个显示所有类别的侧边栏元素:

<div id="category-sidebar">
  <h2>Categorias</h2>
  <% Category.order('name').each do |category| %>
    <%= link_to category.name %>
  <% end %>
</div>

这会产生:

<div id="category-sidebar">
  <h2>Categorias</h2>
    <a href="/ads/Aeronautica">Aeronautica</a>
    <a href="/ads/Aeronautica">Agropecuaria y Campo</a>
    <a href="/ads/Aeronautica">Alimentos y Bebidas</a>
    <a href="/ads/Aeronautica">Animales y Mascotas</a>
    <a href="/ads/Aeronautica">Arte y Antiguedades</a>
</div>

我想生成一个href,如:

/ads/Aeronautica
/ads/Alimentos%20y%20Bebidas

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

使用bundle exec rake路由查找“/ ads /:category_name /:id”路径的命名路由。假设这条路线被称为“类别”。然后你可以这样做(注意'_path'位):

Category.order('name').each do |category|
  link_to category.name, categories_path(:id => category.id)
end