【问题标题】:Loop over Object attributes in Ruby on Rails在 Ruby on Rails 中循环对象属性
【发布时间】:2011-05-22 02:29:02
【问题描述】:

是否可以在 Rails 中循环遍历对象的属性?我有一个对象,而不是编写视图中的每个属性,我想在视图中输出它们中的每一个,因为有很多。

我有一个名为@work_profile 的对象,它有很多属性,主要是布尔复选框值。

编辑:我知道我可以使用@work_profile.attributes。将哈希格式化为更用户友好的任何帮助都会很棒。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    ActiveRecord::Base.attributes() 方法返回所有属性的哈希值。您可以使用它来循环所有属性。

    @work_profile.attributes.each do |attr_name, attr_value|
      ...
    end
    

    在一个视图中,这将给出:

    <% @work_profile.attributes.each do |attr_name, attr_value| %>
      <div class="work_profile_attribute">
        <%= attr_name %>: <%= attr_value %>
      </div>
    <% end %>
    

    【讨论】:

    • 这就是我想要的。如何在视图中格式化hash的输出?
    • 我不完全确定你所说的哈希输出是什么意思,但我添加了一个代码 sn-p,它显示了如何循环视图中的属性。只是一个例子......
    • 有没有办法将 attr_name 转换为更友好的名称?即:have_a_car:对更像有车的东西:true
    • 试试attr_name.humanize。这会将诸如“have_a_car”之类的字符串转换为“Have a car”。请注意,Rails 提供了 String#humanize 方法,因此这在 Rails 环境之外无法工作。
    猜你喜欢
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多