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

これが1つの解決策です。

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) %>

よりきれいなのは、パーシャルを使用することです...HTMLを記述するためのパーシャルな使用; HTMLレンダリングを支援するために使用するヘルパー関数。

<%= render :partial => 'obj_attributes', :locals => { :active_record_obj => toto } %>
于 2013-03-20T15:33:46.120 に答える