0

我想根据通过参数传入的变量名称突出显示表头。

在控制器中我有:

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}
4

2 回答 2

2

直接回答您的问题(不是最佳实践):

instance_variable_set :"@sort_by_#{sort}", 'highlight'

但实际上,使用散列或其他更好的数据结构是更好的答案。

于 2013-10-29T03:43:46.057 回答
1

正如我在评论中详述的那样,这是一种骇人听闻和不好的做法:

instance_variable_set("@sort_by_#{sort}", "highlight")

就个人而言,我不会从控制器内部管理突出显示逻辑。将其提取到视图助手中或将逻辑直接放在视图中:

%th{class: ('highlight' if params[:sort] == 'grade')}

或者,使用视图助手:

application_helper

def sort_highlight(col)
  "highlight" if params[:sort] == col
end

看法

%th{class: sort_highlight('grade')}
于 2013-10-29T03:42:00.887 回答