我想根据通过params传入的变量名称来突出显示表头。
在控制器中我有:
case sort
when 'grade'
@sort_by_grade = 'highlight'
when 'student_name'
@sort_by_student_name = 'highlight'
end
有更优雅的方法吗?例如,像:
"sort_by_#{sort}" = 'highlight'
我的表格标题代码在Haml中是这样的:
%th{:class => @sort_by_grade}
答案 0 :(得分:2)
直接回答您的问题(不是最佳做法):
instance_variable_set :"@sort_by_#{sort}", 'highlight'
但实际上,使用哈希或其他更好的数据结构是一个更好的答案。
答案 1 :(得分:1)
正如我在评论中详述的那样,这是一个黑客和不好的做法:
instance_variable_set("@sort_by_#{sort}", "highlight")
就个人而言,我不会在控制器内管理突出显示逻辑。将其解压缩到视图助手中或将逻辑直接放在视图中:
%th{class: ('highlight' if params[:sort] == 'grade')}
或者,使用视图助手:
def sort_highlight(col)
"highlight" if params[:sort] == col
end
%th{class: sort_highlight('grade')}