0

我有一个名称列表,其中包含:

<td><%= product.date %></td>

它在我的索引页中。(这是我的应用程序列表)

我想为其分配一个自定义链接,并将该值传递给控制器​​:我试过这个:

<td><%= link_to product.date, {:controller => "product", :action => "sort_by_date", <how do I pass the 'product.date' string?>  }%></td>

我阅读了 rails 路线指南,但找不到帮助

谢谢

什么耙路线返回:

    products GET    /products(.:format)          products#index
                 POST   /products(.:format)          products#create
 new_product GET    /products/new(.:format)      products#new
edit_product GET    /products/:id/edit(.:format) products#edit
     product GET    /products/:id(.:format)      products#show
                 PUT    /products/:id(.:format)      products#update
                 DELETE /products/:id(.:format)      products#destroy
            root        /    

                        products#home.html
4

1 回答 1

4

像下面这样使用

<%= link_to product.date, {:controller => "product", :action => "sort_by_date", :product_date => product.date %>

在你的控制器中你应该得到日期params[:product_date]

您还可以使用资源辅助函数来传递自定义参数,如下所示。

<%= link_to product.date, products_path(:product_date => product.date)

此方法将路由到ProductsController#index带有params[:product_date]


编辑:

我刚刚尝试了以下

resources :products do
 collection do
    get 'sort_by_date' => 'products#sort_by_date'
 end
end

耙子路线如下

sort_by_date_products GET    /products/sort_by_date(.:format)   products#sort_by_date

要生成 URL,最好使用如下的资源辅助函数

sort_by_date_products_path(:product_date => '1/1/2012')

这将生成一个类似的 url /product/sort_by_date?product_date=1/1/2012,它将调用的sort_by_date方法ProductsController并且也params[:product_date]可用。

让我们检查它是否工作......

于 2012-08-24T11:08:25.190 回答