我想将以下内容从我的View中移到模型的关联助手中:
<%= link_to_unless params[:aged]=='0', "0", jobs_path(:aged => '0', :sort=>params[:sort],:dir=>params[:dir],:fav=>params[:fav]) %> |
<%= link_to_unless params[:aged]=='30', "30", jobs_path(:aged => '30', :sort=>params[:sort],:dir=>params[:dir],:fav=>params[:fav]) %> |
<%= link_to_unless params[:aged]=='60', "60", jobs_path(:aged => '60', :sort=>params[:sort],:dir=>params[:dir],:fav=>params[:fav]) %> |
<%= link_to_unless params[:aged]=='90', "90", jobs_path(:aged => '90', :sort=>params[:sort],:dir=>params[:dir],:fav=>params[:fav]) %>
我试过这个,但是它会导致一个UNEXPECTED IDENTIFIER错误(显然我需要将link_to_unless的结果连接到'|'):
link_to_unless params[:aged]=='0', "0", users_path(:aged=>'0',:sort=>params[:sort],:dir=>params[:dir],:fav=>params[:fav]) |
link_to_unless params[:aged]=='30', "30", users_path(:aged=>'30',:sort=>params[:sort],:dir=>params[:dir],:fav=>params[:fav]) |
link_to_unless params[:aged]=='60', "60", users_path(:aged=>'60',:sort=>params[:sort],:dir=>params[:dir],:fav=>params[:fav]) |
link_to_unless params[:aged]=='90', "90", users_path(:aged=>'90',:sort=>params[:sort],:dir=>params[:dir],:fav=>params[:fav])
似乎我需要将这些帮助方法的结果插入到HTML流中,但我不确定最佳方法。
现在Rails 3始终包含所有帮助程序(helper:all)有没有办法指示模型的视图只使用与模型关联的帮助程序?此时,我将模型的名称添加到函数的名称中 - 例如,'jobs_sorted_column'。
**编辑**
重构
jobs_helper:
def posted_filter(bucket)
link_to_unless params[:posted]==bucket, bucket, jobs_path(:posted =>bucket, :starting=>params[:starting],:sort=>params[:sort],:dir=>params[:dir])
end
视图:
[ <% ['0','30','60','90'].each do |bucket| %>
<%= posted_filter(bucket) %> |
<% end %> ]
的问题:
答案 0 :(得分:3)
尝试使用collect
和join
,例如:
<%= ['0','30','60','90'].collect{ |x| "#{posted_filter(x)}" }.join(' | ') %>
请参阅:Array #collect
答案 1 :(得分:1)
你可以做得更好:
def posted_filters(*args)
args.collect { |bucket|
link_to_unless(params[:posted]==bucket, bucket, jobs_path(:posted =>bucket, :starting=>params[:starting],:sort=>params[:sort],:dir=>params[:dir]))
}.join(' | ').html_safe
end
在您的观看代码中:
[ <%= posted_filters(0, 30, 60, 90) %> ]