Ruby on Rails: 在link_to助手路径中使用变量

8

我有一个 HAML 部分文件,接收一个变量 bar,我想把这个变量注入到 link_to 路径中。

例如:

= link_to new_foo_path, class: 'source card' do
    .stuff

我想要用bar替换掉foo。

我已经尝试过:

= link_to new_#{bar}_path, class: 'source card' do

还有其他十几种方法,但似乎都不起作用。

你有什么想法吗?

4个回答

13
你可以像这样尝试:

link_to send("new_#{bar}_path"), class: "source card" do

基本上,send会将某个东西变成一个方法或变量,并允许您将字符串中的所有内容组合成一个变量。

1
那么你如何传递参数呢? - mansoor.khan
想出了另一种方法。 - mansoor.khan
要传递参数以发送请求,只需在字符串 "new_#{bar}_path" 后添加逗号“,”,然后添加参数哈希表。 - medBouzid

1
你可以像这样向链接助手添加参数:
link_to "New Foo", new_foo_path(bar: "bar")

1
我遇到了类似的情况,所以我创建了一个视图助手。对于你的情况,我猜你可以做类似的事情。
helpers/application_helper.rb中创建一个视图助手函数:
def custom_path pathvar
   if pathvar == 'foo'
      new_foo_path
   elsif pathvar == 'bar'
      new_bar_path
   end
end

然后在你的视图中,你可以像这样使用它:
= link_to custom_path(bar), class: 'source card' do

您可以根据自己的需求修改此示例。在我看来,这更加优雅。


0

我认为你可以使用eval

= link_to eval("new_#{bar}_path"), class: 'source card' do

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