4

だから私はこれを行う方法を考え出しましたが、それを行うためのより簡単な方法はありますか?params [:sort] == sortByの場合、%番目のタグの後に.classを追加するだけですが、ヘルパーメソッドに残りのHAMLを含める必要がありますか?

これは私のhelper.rbファイルからの私のヘルパーメソッドです:

def yellow?(sortBy,name,id)
  haml_tag :th, class: "#{'hilite' if params[:sort]== sortBy}" do
    haml_concat link_to name, movies_path(sort: sortBy),{:id => id}
  end
end

これは私のHAMLファイルからのものです:

%tr
  - yellow?("title","Movie Title","title_header")
  %th Rating
4

2 に答える 2

9

この解決策を試しましたか:

%tr
  %th{ :class => if params[:sort] == 'sortBy' then 'hilite' end }
    = link_to "Movie Title", movies_path(:sort => 'title'), :id => "title_header"
  %th Rating

このステートメントif params[:sort] == 'sortBy' then 'hilite' endをヘルパーに移動できます。私の同様の答えを見てください:haml2つのスペースの問題

于 2012-06-06T05:44:25.023 に答える
2

この方法でも実行できます。

app / helpers / some_helper.rb

def hilite
  params[:sort] == 'sortBy' ? { class: 'hilite' } : {}
end

app / views / some.html.haml

%tr
  %th{ hilite }
    = link_to "Movie Title", movies_path(:sort => 'title'), :id => "title_header"
  %th Rating

私はこのアプローチを使用してspan_field_optsヘルパーを作成し、Bootstrapクラスを介して無効なフィールドを模倣しました。

def span_field_opts
  { class: "form-control cursor-none", disabled: true }
end

参照:https ://coderwall.com/p/_jiytg/conditional-html-tag-attribute-in-haml

于 2016-05-08T21:06:09.283 に答える