0

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

但这似乎不起作用。

有什么建议吗?

4

2 回答 2

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 %>
于 2013-03-20T18:03:03.283 回答
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 } %>
于 2013-03-20T15:33:46.120 回答