Ruby on Rails - 将值传递给link_to

Sil*_*ver 4 parameters url ruby-on-rails link-to url-parameters

我是RoR初学者并使用Rails 3.2.3.

我的页面上有一个搜索表单,它会执行get请求并正确过滤结果.

我想添加按日期搜索产品的可能性.我插入了一个date_select并且能够选择日期,当搜索后页面刷新时,所选日期仍然在date_select上,因为我能够通过它params.

但是,我的问题是,当页面呈现产品时,他们有一个link_to到他们的show动作.我的目标是还在URL上传递选定的日期以在该link_to上执行搜索.

例如,如果用户选择20-06-2012至25-06-2012的日期,则仅显示在该时间范围内插入的产品(并且所有这些参数都在网址上)

但是显示每个显示产品的动作的链接仅是:

link_to <%= link_to product.name, product%>
Run Code Online (Sandbox Code Playgroud)

这呈现

http://localhost:3000/products/24 (例子)

我想渲染/展示的是:

http://localhost:3000/products/24?from=20-06-2012&to=25-06-2012
Run Code Online (Sandbox Code Playgroud)

此时执行搜索的所选日期不会存储在数据库中,但我需要从后一页的URL中获取它们,因此,在用户填写之前,需要通过2个不同的页面保留这两个日期.表单,然后将这些日期插入数据库中.

关于这个的任何提示?我搜索过,但我发现的只是如何传递模型中存在的变量,我不想使用cookie或会话变量.

在此先感谢,问候

Sim*_*tti 6

如果要将任意参数传递给以下调用

<%= link_to product.name, product %>
Run Code Online (Sandbox Code Playgroud)

您需要显式调用path方法而不是使用隐式版本.上面的行相当于

<%= link_to product.name, product_path(product) %>
Run Code Online (Sandbox Code Playgroud)

然后你可以传递参数

<%= link_to product.name, product_path(product, :from => 'whatever', :to => 'whatever') %>
Run Code Online (Sandbox Code Playgroud)