【问题标题】:adding params to a path defined by a string - rails将参数添加到由字符串定义的路径 - rails
【发布时间】:2019-10-13 14:15:55
【问题描述】:

我有以下链接,可以将参数传递给 url,它工作正常。

<%= link_to "Buy", new_buyer_path(plan: 'item_D78387628dd', cost:'$45.00'), class: "btn btn-pink", role: "button" %>

但是,我有第二个链接,它从名为 raw_cml 的字符串获取路径 - raw_cml 在不添加参数的情况下可以正常工作。

举个例子

raw_cml = dashboards/imp/budget_mgmt

<%= link_to "Move", raw_cml(score: '9', question:'8'), class: "btn btn-pink" %>

在此示例中,我收到以下错误:

未定义的方法`raw_cml'

有人可以帮助我朝着正确的方向前进吗?

【问题讨论】:

  • 您尝试访问的路径似乎不是您的应用程序中的有效路径,您能否尝试在终端中运行rake routes | grep link 并将结果粘贴到此处?这将告诉我们更多关于您的应用程序中的路由。 (或者您也可以粘贴config/routes.rb 的相关部分)
  • 见下文 - 我已更改字符串名称以防止任何混淆。所有路径均有效。这是对工作应用程序的升级。
  • new_buyer_path 是一个命名路由,它不是字符串,link_path 只是一个存储字符串的变量,它不能那样工作,它只是一个普通字符串。也许您可以使用 URI 模块将字符串处理为实际的 URI ruby-doc.org/stdlib-2.6.5/libdoc/uri/rdoc/URI.html

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


【解决方案1】:

我不确定,但您可以列出 Rails 应用程序的可用路径,例如:

bundle exec rails routes | grep link

检查link_path 是否可以使用。

【讨论】:

  • 感谢 Dac,但 link_path 实际上是一个名为 raw_cml 的字符串。我将编辑问题,以便更清楚 - 现在看看它的混乱!
【解决方案2】:

尝试用字符串url连接参数:

<% fixed_raw_cml = raw_cml + (raw_cml.include?('?') ? '&' : '?') %>
<%= link_to "Move", fixed_raw_cml + { score: '9', question:'8' }.to_query, class: "btn btn-pink" %>

【讨论】:

  • 如果raw_cml 已经有一个查询字符串怎么办?如果它已经有 # 个锚点怎么办?
  • 这似乎成功了 - 谢谢。现在,我只需要弄清楚怎么做!
【解决方案3】:

我对此进行了更多研究,发现 .to_params 提供了一种单行方法。

<%= link_to "Improve", raw_cml + '?' + { uqr: qid }.to_param, class: "btn btn-pink" %>

似乎给出了相同的结果。

我会对这种方法的任何不可预见的后果感兴趣吗?

谢谢

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 2011-07-20
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多