我有以下代码,在html.erb页面中多次重复。
<% object_info.attributes.each do |attr_name, attr_value| %>
<span class="attribute_title"><%= attr_name %>:</span>
<span class="attribute_value"><%= attr_value %> </span>
<br/>
<% end %>
我想把它放在一个方法中,这样我只需要在需要时调用该方法。
我尝试将它作为方法放在帮助页面中,并在我的html页面上调用它:
def display_obj_attributes(active_record_obj)
data = "<% #{active_record_obj}.attributes.each do |attr_name, attr_value| %>
<span class='attribute_title'><%= attr_name %>:</span>
<span class='attribute_value'><%= attr_value %> </span>
<br/>
<% end %>"
return data.html_safe
end
但它似乎不起作用。
有什么建议吗?
答案 0 :(得分:2)
把它放在一个部分的_my_partial.js:
<% object_info.attributes.each do |attr_name, attr_value| %>
<span class="attribute_title"><%= attr_name %>:</span>
<span class="attribute_value"><%= attr_value %> </span>
<br/>
<% end %>
然后在你看来:
<%= render 'my_partial', object_info: object_info %>
答案 1 :(得分:0)
这是一个解决方案。
def display_obj_attributes(active_record_obj)
data = ''
active_record_obj.attributes.each do |attr_name, attr_value|
data += content_tag(:span, "#{attr_name}:", :class => 'attribute_title')
data += content_tag(:span, attr_value, :class => 'attribute_value')
data += '<br/>'
end
end
<%= display_obj_attributes(toto) %>
更漂亮的是使用partials ...部分用于描述HTML;辅助函数用于帮助HTML呈现。
<%= render :partial => 'obj_attributes', :locals => { :active_record_obj => toto } %>