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 に答える