Rails命名为route&助手(/ controller /:id / randomname)

时间:2015-07-02 00:00:43

标签: ruby-on-rails-4 routes helper

我正在努力让以下路由工作:

get 'items/:id/pictures' => 'pictures#show'

我应该使用什么样的辅助方法?使用<%= link_to pictures_item_path do %>我收到以下错误:

undefined local variable or method `pictures_item_path' for #<#<Class:0x007fa2c6181710>:0x007fa2c40ba7c0>

我尝试过使用get 'items/:id/pictures' => 'pictures#show', as: 'items/:id/pictures'并收到以下错误:

Invalid route name: 'items_:id_pictures'

2 个答案:

答案 0 :(得分:1)

您的路线是正确的。如果您要使用帮助程序,则必须使用Named routes

路由可以通过传递:as选项进行命名,以便在源中轻松引用name_of_route_url作为完整URL,name_of_route_path作为URI路径:

# In routes.rb
get '/login', to: 'accounts#login', as: :login

# With render, redirect_to, tests, etc.
redirect_to login_url

我希望这很有帮助。

答案 1 :(得分:0)

<强>的routes.rb

get 'items/:id/pictures' => 'pictures#show'

在控制台上执行此命令

rake routes

你会得到像这样的结果

pictures_item GET    /items/:id/pictures(.:format)   pictures#show

您必须使用pictures_item_path(:id)pictures_item_url(:id),因为它是会员路线

试试这个:

<%= link_to 'item picture', pictures_item_path(@item_id) %>

详细了解routes