0

所以基本上我已经设置了一个匹配“products/:product”的路由,它似乎响应了像baseurl/products/toaster这样的页面并显示了烤面包机产品。我的问题是我似乎无法使用 link_to 来生成这条路径,我的意思是我不知道如何。对此有什么帮助吗?

4

2 回答 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 回答