在html.erb页面重复代码

时间:2013-03-20 15:27:50

标签: ruby-on-rails

我有以下代码,在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

但它似乎不起作用。

有什么建议吗?

2 个答案:

答案 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 } %>