我想在指向的链接上传递参数(例如,参数称为company = heise),但前提是该参数确实存在。
让我们说:
我访问了somesite.com
,然后单击一个链接,该链接会将我重定向到mysite.com/?company=heise
在mysite
上,我有一些link_to,我希望它们在存在参数company=heise
时传递参数mysite.com/?company=heise
,因为我现在是通过<%= link_to "This is a link", this_link_path, class: tl(this_link_path) %>
进入站点的,所以它存在,因为它应该执行以下操作:
mysite.com/this_link/?company=heise
应将我重定向到{{1}}
希望我的问题足够清楚
答案 0 :(得分:1)
有条件地传递散列,其中包含this_link_path
网址帮助程序的其他参数。
<%= link_to "This is a link", this_link_path( ({company: params[:company] } if params[:company]) ), class: tl(this_link_path) %>
为简洁起见,您可以compact哈希。
<%= link_to "This is a link", this_link_path({company: params[:company]}.compact), class: tl(this_link_path) %>
如果您知道会更需要它,请将this_link_path
调用包装在自定义帮助程序中。哈希可以包含其他参数,包括具有固定值的参数。
def this_link_with_additional_params_path
this_link_path({company: params[:company], name: 'test'}.compact)
end
然后在视图中可以使用:
<%= link_to "This is a link", this_link_with_additional_params_path, class: tl(this_link_path) %>
答案 1 :(得分:0)
这里的想法是创建一个辅助方法来管理要有条件地发送到此链接的参数。
# some_helper.rb
def carried_over_params(params = {})
interesting_keys = %i(company)
params.slice(*interesting_keys).compact
end
然后,您应该在视图中使用它
<%= link_to "This is a link", this_link_path(carried_over_params(params).merge(test: 'value')), class: tl(this_link_path) %>