从链接名称Rails将值传递给控制器

时间:2012-08-24 11:01:48

标签: ruby-on-rails

我有一个名单,包含:

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

它在我的索引页面中。 (这是我的申请表)

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

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

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

由于

rakes路线的回报:

    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

1 个答案:

答案 0 :(得分: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')

这会生成一个类似/product/sort_by_date?product_date=1/1/2012的网址,该网址会调用sort_by_date的{​​{1}}方法并且ProductsController可用。

让我们检查一下它的工作......