Rails新手在这里。我在发帖时试图显示用户名。但是,它会继续显示user_id(整数)。我想显示他们的实际名字。我正确地连接了一切。这是代码。感谢。
post / index.html.erb中的..... @ user.username将显示未定义的方法错误。
<%= render 'layouts/header' %>
<!--posts table!-->
<div class="container">
<% @posts.each do |post| %>
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
<%= post.title %>
<div class="pull-right">
<%= @user.username %> |
<%= time_ago_in_words(Time.now) %>
</div>
</h3>
</div>
<div class="panel-body">
<%= post.description %>
</div>
</div>
<% end %>
答案 0 :(得分:1)
应该是
<%= post.user.username %>
<!--posts table!-->
<div class="container">
<% @posts.each do |post| %>
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
<%= post.title %>
<div class="pull-right">
<%= post.user.username %> | #here
<%= time_ago_in_words(Time.now) %>
</div>
</h3>
</div>
<div class="panel-body">
<%= post.description %>
</div>
</div>
<% end %>
<%= post.user_id %>
将始终提供整数值( user_id is integer
)。如果您想要显示 associated username
,那么您必须做<%= post.user.username %>
注意:抱歉格式。我喜欢它。
答案 1 :(得分:1)
为您提供更多输入 - Pavan
描述的内容与Rails中的ActiveRecord associations有关:
#app/models/post.rb
belongs_to :user
这将在您的父对象(@post.user
)上创建另一个方法,该方法将填充父对象中foreign_key
引用的数据。例如,您的user_id
模型中有Post
- 将被翻译为.user
以便在您的视图中使用
这意味着您可以致电@post.user.name
来获取User
型号中的用户名或属性
-
但还有更多!!
您将从.delegate
方法中受益 - 这基本上允许您将关联控制器中的方法视为父级方法:
#app/models/post.rb
belongs_to :user
delegate :name, to: :user, prefix: true #-> creates post.user_name
这意味着您可以直接在父模型上调用委托方法(就像您现在如何获得它一样)