2012-04-09 6 views
2

Ребята Я новичок в RoR и MVC.Можно ли включить код просмотра в Model?

У меня есть модель, которая обрабатывает данные получателя займа. Чтобы получить доступ к структурированным данным (в том числе небольшого фрагмента данных HTML) Я создал метод, как этот

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

И в представлении, я использую эту информацию что-то вроде этого

<%= @b.info.html_safe %> 

были b - это экземпляр класса получателя

Он отлично работает для меня. Я просто хочу знать, что я нарушаю правило MVC здесь? Можно ли включить код представления в модель?

ответ

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 больше вы хотите повторно фактор или очистить свой код, который вы можете смотреть draper или presenter

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}