【问题标题】:Ruby on Rails - Passing values to a link_toRuby on Rails - 将值传递给 link_to
【发布时间】:2025-12-30 18:25:10
【问题描述】:

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

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

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

但是,我的问题是,当页面呈现产品时,它们有一个指向其展示操作的 link_to。 我的目标是在 url 旁边传递选择的日期以在该 link_to 上执行搜索。

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

但显示每个显示产品的操作的链接只有:

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 或会话变量。

提前致谢, 问候

【问题讨论】:

    标签: ruby-on-rails url parameters link-to url-parameters


    【解决方案1】:

    如果你想将任意参数传递给下面的调用

    <%= link_to product.name, product %>
    

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

    <%= link_to product.name, product_path(product) %>
    

    然后就可以传参数了

    <%= link_to product.name, product_path(product, :from => 'whatever', :to => 'whatever') %>
    

    【讨论】:

      【解决方案2】:

      你可以这样试试

      link_to <%= link_to product.name, product, :param_you_want => "value you want" %>
      

      现在您可以根据需要在“param_you_want”中设置值。

      但在我的情况下,将值设置为“你想要的值”

      希望你能得到想法

      【讨论】:

      • 我试过了,它没有在它前面呈现一个带有"value you want"的链接,加载时显示页面也没有它的参数(我检查了usign params,它只有有这个:{"action"=&gt;"show", "controller"=&gt;"products", "id"=&gt;"24"}。有什么建议吗?
      • @ali 在您的示例中,参数作为html_options 传递给链接助手,而不是路径参数。见api.rubyonrails.org/classes/ActionView/Helpers/…