我想在我的视图中显示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 %>
答案 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
age
(people
?)表格中的persons
列。
答案 1 :(得分:1)
顺便说一下,如果Person是AR型号,我建议你使用像布料一样的宝石。 它会为你的模型创建装饰器。在装饰器中你可以定义默认值,attr_accessors它会更优雅和实用的解决方案。 你的代码看起来像是:
def show
@persons = Person.all.decorate
end