2012-04-09 56 views
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規則?在Model中包含視圖代碼是否有效?

回答

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>元素與類屬性和CSS來處理換行和字體粗細,而不是<br><b>

附加說明:如果您希望幫助程序可用於整個應用程序,您可以將它放入/app/helpers/application_helper.rb

3

如果你想使用HTML標記來顯示數據,你可以寫,而不是寫入model.Or輔助方法,更要重因子或清理你的代碼,你可以看draperpresenter

0

我敢肯定模型是放在哪裏HTML,使用一個幫手是肯定的改善,但考慮到可能使用的部分的地方:

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

,然後在您的視圖,當你需要出示受益人的信息呈現此部分:

<%= render @beneficiary %> 

UPDATE:如果您需要顯示的方式受益人和他/她以不同的方式信息,你應該把受益人信息在/視圖/受益人/ _in fo.html.erb,然後以這種方式調用渲染:

render :partial => "beneficiaries/info", :locals => {beneficiary: @beneficiary} 
相關問題