[解決済み] ビューのHTML要素に条件付きでクラスを追加するエレガントな方法とは?
2022-09-12 18:44:48
質問
私は時々、ある条件に基づいてhtml要素にクラスを追加する必要があります。問題は、それを行うためのきれいな方法を見つけ出すことができないことです。以下は、私が試したものの例です。
<div <%= if @status = 'success'; "class='ok'"; end %>>
some message here
</div>
または
<% if @status == 'success' %>
<div class='success'>
<% else %>
<div>
<% end %>
some message here
</div>
最初の方法は、見た目が混雑して読みにくいので好きではありません。2番目の方法は、ネストがめちゃくちゃになるので好きではありません。それをモデルの中に入れるのはいいことだと思います(たとえば
@status.css_class
のようなもの)、しかしそれはそこに属するものではありません。ほとんどの人はどうするのでしょうか?
どのように解決するのですか?
私は最初の方法を使いますが、もう少し簡潔な構文にします。
<div class="<%= 'ok' if @status == 'success' %>">
通常、成功はブール値で表現する必要がありますが
true
または数値のレコードIDで、失敗はブール値の
false
または
nil
. このようにすれば、変数をテストするだけでよいのです。
<div class="<%= 'ok' if @success %>">
三項を用いた第二の形式
?:
演算子は2つのクラスのどちらかを選択したい場合に便利です。
<div class="<%= @success ? 'good' : 'bad' %>">
最後に、Railの
レコードタグヘルパー
のような
div_for
のようなタグを使用すると、与えられたレコードに基づいて自動的にIDとクラスが設定されます。 与えられた
Person
があり、IDが47であるとします。
# <div id="person_47" class="person good">
<% div_for @person, class: (@success ? 'good' : 'bad') do %>
<% end %>
関連
-
[解決済み】Rails: sudo "コマンドが認識されないのはなぜですか?
-
[解決済み] Ruby/Rails の「フック」とは何ですか?
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] gemのアップデート後、"Asset was not declared to be precompiled in production "でテストが失敗する。
-
[解決済み] "render :nothing => true" は空のプレーンテキストファイルを返すのですか?
-
[解決済み】Ruby: 配列から最初の要素を削除する最も簡単な方法は何ですか?
-
[解決済み】<%= f.submit %>にCSSクラスを追加する。
-
[解決済み] RubyやRailsで独自のエラータイプを定義するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み】コントローラでJSONをレンダリングする
-
[解決済み】コレクションをDESCで並べる方法
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] 検索 vs 発見する by vs どこに
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] Rails / Haml: 投稿フォームを作成するには?
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] rails/rubyでgroup_byを使用する。
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".