0

Rails 3 アプリケーション ビューの 1 つに次のコードがあります。

<ul>
<li style="position:relative">
<b>MR</b> - 18 Jun. 2012 -  11:07<br />
<p style="width:85%">Paid by Cheque  000562</p>
<span style="position:absolute;top:0px;right:0px;text-align:right">&pound;0,00<br /><b>Balance: -&pound;7,36</b></span>
</li>
<hr />
<li style="position:relative">
<b>JJ</b> - 01 May. 2012 -  09:35<br />
<p style="width:85%">label 2 Packets Recovery -Rabbit</p>
<span style="position:absolute;top:0px;right:0px;text-align:right">&pound;0,00<br /><b>Balance: &pound;7,36</b></span>
</li>
<hr />

これにより、次のようにコンテンツが表示されます。

スクリーンショット

生の Rails コードは次のとおりです。

<ul>
<% @animal.clinicals.each do |clinical| %>
<li>
<b><%= clinical.UserID %></b> - <%= clinical.FullDateTime.strftime("%d %b. %Y -  %H:%M") %><br />
<p><%= clinical.ClinicalText %></p>
<span><%= number_to_currency(clinical.Fees, :unit => "&pound;", :separator => ",", :delimiter => "") %><br /><b>Balance: <%= number_to_currency(clinical.LineBalance, :unit => "&pound;", :separator => ",", :delimiter => "") %></b></span>
</li>
<hr />
<% end %>
</ul>  

私がやろうとしているのは、ClinicalText フィールドの値に応じて HTML コードを変更することです。たとえば、以下はそのフィールドへの可能なエントリです。

label 2 Packets Recovery -Rabbit
Surcharge (Credit)
disp 250 Tabs...

そのため、ClinicalText の先頭に「label」が含まれている場合は、label という単語を削除して、li に CSS スタイルを追加します。同様に、「Surcharge」または「disp」が含まれている場合、li にさまざまな CSS スタイルを追加したいと思います。

ビューでif、else、elseifステートメントを使用してこれを行う方法を考えることができますが、これを何らかのヘルパーにすることをお勧めします。

任意のポインタをいただければ幸いです!

4

1 に答える 1

1

タグ全体を生成するヘルパーを作成する<p>と、CSS でスタイルを設定できるクラスを簡単に追加できるようになります。case(switch他のほとんどの言語では) ステートメントを使用できます。

def format_clinical_text(txt)
    cls = ''

    case(txt)
    when /\Alabel/i
        txt.sub!(/label\s*/, '')
        cls = 'label'
    when /\Asurcharge/i
        cls = 'surcharge'
    when /\Adisp/i
        cls = 'disp'
    end

    return "<p class=\"#{cls}\">#{ERB::Util.h(txt)}</p>".html_safe
end

次に、この行:

<p><%= clinical.ClinicalText %></p>

次のようになります。

<%= format_clinical_text(clinical.ClinicalText) %>

以上です!これらの正規表現では大文字と小文字が区別されませんが、トリガー ワードが入力文字列の最初にある必要があることに注意してください (スペースやナットインは使用できません)。また、"label"大文字と小文字だけが一致する単語を取り除きます。私はあなたの質問をそのように解釈しましたが、間違っているかもしれません。必要に応じて微調整します。

それが役立つことを願っています!

于 2012-06-21T17:20:33.740 に答える