如何在ruby中获取对象的属性?

时间:2016-08-03 16:04:56

标签: ruby-on-rails ruby ruby-on-rails-5

我是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: "mail@mail.com", created_at: "2016-08-03 15:40:41", updated_at: "2016-08-03 15:40:41", password_digest: "$2a$10$KmWWK86H/dj.HAp9zcHOUOCbph1rawIer41kyH4dIrV...">]

我在这里缺少什么?我甚至不确定谷歌是什么,因为我不知道循环是什么吐出来的。

2 个答案:

答案 0 :(得分:3)

您没有向用户显示数据。

在您的控制器方法中,您应该添加

@users = User.all 

在你看来

<% @users.each do |user| %>
  <h1><%= user.name %></h1>
<% end %>
  • &lt; %%&gt; :这些括号用于评估表达式
  • &lt;%=%&gt; :这些括号评估表达式并呈现输出

答案 1 :(得分: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调用和大量逻辑不在您的视图中。利用控制器,模型和助手来做到这一点。