伙计我是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规则?在模型中包含视图代码是否有效?
答案 0 :(得分:3)
答案 1 :(得分: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) %>
注意:我建议使用带有class属性和CSS的<span>
元素来处理换行符和字体粗细,而不是<br>
和<b>
附加说明:如果您希望帮助程序可用于整个应用程序,可以将其放在/app/helpers/application_helper.rb
答案 2 :(得分: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 :partial => "beneficiaries/info", :locals => {beneficiary: @beneficiary}