2012-04-09 3 views
2

남자 RoR과 MVC를 처음 사용했습니다.모델에보기 코드를 포함시키는 것이 유효합니까?

나는 대출 수혜자의 데이터를 다루는 모델을 가지고있다. 나는이

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

같은 방법을 생성하고보기에, 나는,

<%= @b.info.html_safe %> 

이었다 같은이 정보 뭔가를 사용하고 있습니다 (HTML 데이터의 작은 조각 포함) 구조화 된 데이터에 액세스하려면 b은 수혜자 등급의 인스턴스입니다.

저에게 도움이됩니다. 난 그걸 알고 싶다. MVC 규칙을 어기는거야? 모델에보기 코드를 포함시키는 것이 유효합니까? 데이터를 표시 할 HTML 태그를 사용하려면

답변

2

볼 수있는 요소를 다시하거나 코드를 청소하려면 대신 model.Or로 작성하는 도우미 방법을 쓸 수 있습니다 이 파일을 도우미 파일로 만듭니다.

보기에
# /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) %> 

주를 사용할 수 있습니다 : I 줄 바꿈 및 글꼴 무게 대신 <br><b>

을 처리하는 클래스의 속성과 CSS로 <span> 요소를 사용하는 것이 좋습니다 것

추가 참고 사항 : 전체 응용 프로그램에서 도우미를 사용할 수있게하려면 /app/helpers/application_helper.rb

3

당신은 더 당신이 그것을 넣어하는 것이 좋습니다 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}