2

RoR と MVC は初めてです。

私はローン受益者のデータを扱うモデルを持っています。構造化データ (小さな HTML データを含む) にアクセスするには、このようなメソッドを作成しました

class Beneficiary  < ActiveRecord::Base
  def  info
     "#{name}</br>#{age},#{sex}</br><b>Address :</b>#{address}"
  end
end

ビューでは、この情報を次のように使用しています

<%= @b.info.html_safe %>

bは受益者クラスのインスタンスです

それは私にとってはうまくいっています。ここでMVCルールに違反していますか? モデルにビューコードを含めることは有効ですか?

4

3 に答える 3

3

HTML タグを使用してデータを表示する場合は、モデルに書き込む代わりにヘルパー メソッドを記述できます。または、コードをリファクタリングまたはクリーンアップしたい場合は、ドレーパーまたはプレゼンターを見ることができます。

于 2012-04-09T05:21:45.500 に答える
2

これをヘルパー ファイルに入れることをお勧めします。

# /app/helpers/beneficiary_helper.rb

module BeneficiaryHelper

  def beneficiary_info(b)
    "#{b.name}<br>#{b.age},#{b.sex}<br><b>Address:</b>#{b.address}"
  end
end

あなたの見解では、単に使用できます

<%= raw beneficiary_info(@b) %>

注: <span>class 属性を持つ要素と CSS を使用して、改行とフォントの太さを処理すること<br>をお勧めします。<b>

追記: アプリケーション全体でヘルパーを利用できるようにしたい場合は、/app/helpers/application_helper.rb

于 2012-04-09T05:23:27.147 に答える
0

モデルはHTMLを配置する場所ではないと確信しています。ヘルパーを使用することは確かに改善ですが、パーシャルを使用する可能性を検討してください。

# /views/beneficiaries/_beneficiary.html.erb
<%= beneficiary.name %><br />
<%= beneficiary.age %>,<%= beneficiary.sex %><br />
<b>Address :</b><%= beneficiary.address %>

次に、受取人情報を表示する必要がある場合は、ビューでこれを部​​分的にレンダリングします。

<%= render @beneficiary %>

更新:ある方法で受取人とその情報を別の方法で表示する必要がある場合は、受取人情報を/views/beneficiaries/_info.html.erbに配置してから、次のようにrenderを呼び出す必要があります。

render :partial => "beneficiaries/info", :locals => {beneficiary: @beneficiary}
于 2012-04-09T11:02:22.913 に答える