所以基本上我已经设置了匹配“products /:product”的路线,它似乎响应了像baseurl / products / toaster这样的页面,并显示了烤面包机产品。我的问题是我似乎无法使用link_to来生成这条路径,而我的意思是我不知道如何。对此有何帮助?
答案 0 :(得分:3)
这个有几个解决方案:
<%= link_to 'Toaster', { :controller => 'products', :action => 'whatever', :product => 'toaster' } %>
但它并不是真正的Rails Way,因为你需要在路线的末尾添加:as => :product
。这将创建可以这种方式使用的product_path
助手:
<%= link_to 'Toaster', product_path(:product => 'toaster') %>
答案 1 :(得分:2)
在您的路线文件中,您可以执行以下操作:
match "products/:product" => "products#show", :as => :product
控制器为ProductsController
且视图为show
在您的产品控制器中
def show
@product = Hub.find_by_name(params[:product])
respond_to do |format|
format.html # show.html.erb
end
end
产品中的任何内容/ :产品部分将通过参数提供。
然后,由于我们在您的路线中使用:as
,您可以使用link_to
执行此操作:
<%= link_to product(@product) %>
其中@product
是产品或字符串的实例。这只是一个例子,param可以是你想要的任何东西,控制器/动作也是如此。有关详细信息,请查看this.
希望这有帮助!