我有一个类似的链接:
<%= link_to 'something', some_path(:param1 => something, :param2 => something) %>
如何让param2成为可选项?我想根据条件加入它。
答案 0 :(得分:12)
试试这个:
方法1
<%= link_to 'something', some_path(
{:param1 => something}.merge((x==1) ? {:param2 => something} : {}) %>
方法2
<%= link_to 'something', some_path(:param1 => 1, :param2 => (2 if x==1)) %>
在上面的示例中,当x等于1时,param2
键值为nil。 link_to
方法忽略了nil
有价值的密钥。
答案 1 :(得分:4)
你也可以这样做:
<%= link_to 'something', some_path(:param1 => 'something', :param2 => ('something else' if some_condition)) %>
答案 2 :(得分:2)
如果有很多基于条件的选项,我建议你在这里使用哈希:
<% params = {}
params[:param1] => "blah-blah" if condition
params[:param2] => "blah-blah" if condition
params[:param3] => "blah-blah" if condition
params[:param4] => "blah-blah" if condition
params[:param5] => "blah-blah" if condition %>
<%= link_to 'something', some_path(params) %>
最好把它包装成帮手