在html.erb视图中显示attr_accessor

时间:2017-03-02 19:07:46

标签: ruby-on-rails ruby

我想在我的视图中显示ruby类的一些属性。当我尝试这样做时,我得到一个未定义的方法年龄错误。

person.rb

attr_accessor :age 

控制器动作

def show
 @persons = Person.all
 @persons.each do |p|
   p.age = 25
 end
end

show.html.erb view

<%= @persons.each do |p| %>
   <%= p.age %>
<% end %>

2 个答案:

答案 0 :(得分:1)

1)show是显示单个人,而不是集合(index操作是显示集合的位置。)

2)在模型中定义age后,显示attr_accessor :age时不会有任何麻烦。

因此,以下代码有效(即使未将age分配给任何@persons

<%= @persons.each do |p| %>
  <%= p.age %>
<% end %>

有你展示

# person.rb
attr_accessor :seats

也许你没有

# person.rb
attr_accessor :age

agepeople?)表格中的persons列。

答案 1 :(得分:1)

顺便说一下,如果Person是AR型号,我建议你使用像布料一样的宝石。 它会为你的模型创建装饰器。在装饰器中你可以定义默认值,attr_accessors它会更优雅和实用的解决方案。 你的代码看起来像是:

def show
  @persons = Person.all.decorate
end