Rails - 避免在表中重复

时间:2012-11-06 19:46:37

标签: ruby-on-rails dry

我有一个数据表,我在其中浏览每个用户属性,并将其显示在表格中。这似乎是很多重复,即使单词不相同,每个属性的过程也是如此。有没有办法自动创建一个标题为attribute.titleize且数据单元格为user.attribute的表格行?

%table
  %tr
    %th First Name
    %td= @user.first_name
  %tr
    %th Middle Name
    %td= @user.middle_name
  %tr
    %th Last Name
    %td= @user.last_name

2 个答案:

答案 0 :(得分:2)

您可以使_attribute部分呈现表格的单行:

# app/views/users/_attribute.html.haml
%tr
  %th= attribute.first.titleize
  %td= attribute.second

# app/views/users/show.html.haml
%table
  %tbody= render partial: 'attribute', collection: @user.attributes.to_a

如果您不想呈现User的每个属性,请在模型上创建一个返回您想要的属性的方法,然后调用该方法而不是@user.attributes

# app/models/user.rb
class User
  def public_attributes
    attributes.slice('first_name', 'middle_name', 'last_name')
  end
end

答案 1 :(得分:0)