2017-03-02 11 views
0

ルビークラスのいくつかのプロパティを私のビューに表示したいと思います。私はそうしようとすると、定義されていないメソッドの年齢エラーが発生します。html.erbビューでattr_accessorを表示

person.rb

attr_accessor :age 

コントローラアクション

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

show.html.erb図

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

答えて

1

1)showは(一人ではなく、コレクションを表示することですindexアクションはコレクションを表示する場所です)。

2)attr_accessor :ageをモデルに定義すると、ageの表示に問題はありません。

したがって、次のコードでも​​のいずれかにageを割り当てず(有効である:

あなたは多分あなたは

# person.rb 
attr_accessor :age 
どちらを持っていない

# person.rb 
attr_accessor :seats 

を示したことが持っ

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

また、と呼ばれる列のpeoplepersons?)の表。

1

ところで、PersonがARモデルであれば、ドレープのような宝石を使うことをお勧めします。 あなたのためにデコレータを作成します。そしてデコレータでは、デフォルト値、attr_accessorsを定義することができ、より洗練された実用的なソリューションになります。 コードは次のようになります。

def show 
    @persons = Person.all.decorate 
end 
関連する問題