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