因此下面的代码正常工作,它将“体验”参数传递给我的控制器。我的问题围绕着找到更好的方法来传递option1,option2等的参数......当它们存在时。我有很多范围,我过滤数据的范围越多,filtered_jobs_path就越长。我是相对较新的rails所以也许这是唯一的方法,但似乎应该有一种方法列出所有其他过滤器选项(option1,option2等...),然后调用它视图所以每个link_to都不是一英里长,这可能吗?
<div class="well">
<%= link_to "0-2 years", filtered_jobs_path(experience: '0-2 years', option1: params[:option1], option2: params[:option2]) %><br />
<%= link_to "2-5 years", filtered_jobs_path(experience: '2-5 years', option1: params[:option1], option2: params[:option2]) %><br />
<%= link_to "5-10 years", filtered_jobs_path(experience: '5-10 years', option1: params[:option1], option2: params[:option2]) %><br />
<%= link_to "10+ years", filtered_jobs_path(experience: '10+ years', option1: params[:option1], option2: params[:option2]) %>
</div>
答案 0 :(得分:0)
这是你在找什么?
# some_helper.rb
def filtered_jobs_link(text)
link_to text, filtered_jobs_path(experience: text, option1: params[:option1], option2: params[:option2])
end
#some_view.html.erb
<div class="well">
<%= filtered_jobs_link "0-2 years" %><br />
<%= filtered_jobs_link "2-5 years" %><br />
<%= filtered_jobs_link "5-10 years" %><br />
<%= filtered_jobs_link "10+ years" %>
</div>
答案 1 :(得分:0)
创建帮助器:
module JobsHelper
def filtered_jobs_link(text, **opts)
opts.reverse_merge!(params.slice(:option1, :option2))
link_to text, filtered_jobs_path(opts)
end
end
然后遍历选项:
<ul>
<% ["0-2 years", "2-5 years", "5-10 years", "10+ years"].each do |o|%>
<li><%= filtered_jobs_link(o, experience: o) %></li>
<% end %>
</ul>
如果您真的必须使用该特定标记:
module JobsHelper
def filtered_jobs_link(text, **opts)
opts.reverse_merge!(params.slice(:option1, :option2))
link_to text, filtered_jobs_path(opts)
end
def filtered_jobs_by_experience(*options)
options.map { |o| filtered_jobs_link(o, experience: o) }.join('</ br>')
end
end
<div class="well">
<%= filtered_jobs_by_experience("0-2 years", "2-5 years", "5-10 years", "10+ years") %>
</div>