2016-08-03 17 views
0

RubyとRailsの新機能です。私はすべてのユーザーの作業を確認するよう努めてきましたが、何が間違っているのか分かりません。ルビでオブジェクトの属性を取得するにはどうすればよいですか?

私はとのビューがあります。

<% provide(:title, "View all Users") %> 

<h1>Users#viewall</h1> 
<p>Find me in app/views/users/viewall.html.erb</p> 

<% 
@users = User.all 
@users.each do |user| 
    user.name 
end 
%> 

これの出力は、すべてのオブジェクトのデータを、データベース内のオブジェクトのリストです。名前だけをターゲットにしたい場合、それは機能しません。

[#<User id: 1, name: "user name", email: "[email protected]", created_at: "2016-08-03 15:40:41", updated_at: "2016-08-03 15:40:41", password_digest: "$2a$10$KmWWK86H/dj.HAp9zcHOUOCbph1rawIer41kyH4dIrV...">] 

ここでは何が欠けていますか?私はループが鳴っているのか分からないので、私は実際にgoogleに何をしているのか分からない。

答えて

2

情報を出力する必要があります。 ERBでは、次のようなタグがあるとします。

<% i = 4 %> 

コードを実行します。あなたが持っているとき:

<%= "hi" %> 

それは戻り値を出力します。それでは、あなたが実際に欲しいのはこれです:

<% User.all.each do |user| %> 
    <%= user.name %> 
<% end %> 

あなたががユーザーに何をすべき、セットアップはあなたのコントローラ内のインスタンス変数です:

def viewall 
    @users = User.all 
end 

次に、あなたのビューでそれを使用します。

<% @users.each do |user| %> 
    <%= user.name %> 
<% end %> 

あなたのビューからSQL呼び出しと多くのロジックを保護することをお勧めします。コントローラ、モデル、ヘルパーを活用してそれを実現します。

+0

ありがとう、余分な説明は本当に役に立ちました。 – ramijames

3

ユーザーにデータを表示していません。お使いのコントローラメソッドで

、あなたが

@users = User.all 

を追加する必要がありますそして、あなたのビューで>

<% @users.each do |user| %> 
    <h1><%= user.name %></h1> 
<% end %> 
  • <%%はどこです:これらのブラケットは、式を評価するために使用されている
  • <%=%>:これらの括弧は式を評価し、出力をレンダリングします
関連する問題