Ruby on Rails - 传递参数至link_to函数

4

我是一名RoR初学者,正在使用Rails 3.2.3。

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

我想添加还可以通过日期搜索产品的可能性。我插入了一个date_select,并能够选择日期,当页面在搜索后刷新时,所选日期仍然在date_select中,因为我能够通过params获取它们。

然而,我的问题是,当页面呈现产品时,它们具有指向其show操作的link_to。我的目标是在该link_to中同时传递选择执行搜索的日期。

例如,如果用户选择2012年6月20日至2012年6月25日的日期,它只显示在那个时间范围内插入的产品(所有这些参数都在URL上)。

但是每个显示产品的show action的链接仅为:

link_to <%= link_to product.name, product%>

需要渲染的内容是:

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

我想要显示的内容类似于:

http://localhost:3000/products/24?from=20-06-2012&to=25-06-2012

所选的日期并未存储在数据库中,但需要从后续页面的URL中获取它们。因此,在用户填写表单之前,这两个日期需要通过2个不同的页面进行保留,并将这些日期插入到数据库中。
对此有什么建议吗?我已经搜索了,但所有的内容都是关于如何传递存在于模型中的变量,而我不想使用cookie或会话变量。
提前感谢您的帮助, 敬礼
2个回答

6
如果您想向下一个调用传递任意参数。
<%= link_to product.name, product %>

您需要显式调用path方法,而不是使用隐式版本。上面的行与下面的代码相同:
<%= link_to product.name, product_path(product) %>

然后,您可以传递参数。
<%= link_to product.name, product_path(product, :from => 'whatever', :to => 'whatever') %>

3
你能试试这样做吗?
link_to <%= link_to product.name, product, :param_you_want => "value you want" %>

现在,您可以随意设置“param_you_want”中的值。但在我的情况下,将其值设置为“value you want”。希望您能理解。

我尝试过,但它没有呈现一个链接,并且当加载显示页面时,它的参数中也没有"value you want"(我使用了params进行检查,只有这个:{"action"=>"show", "controller"=>"products", "id"=>"24"})。有什么建议吗? - Silver
@ali 在你的示例中,参数作为 html_options 传递给链接助手,而不是路径参数。请参阅 http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to - Simone Carletti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接