在我的帖子索引视图中,它显示“#”作为用户,在尝试post.user.email时,它给我一个错误,当在单个视图页面上使用@ post.user.email但是它给了我正确的电子邮件。
我相信这意味着我的关联错了吗?
class Post < ActiveRecord::Base
belongs_to :user
acts_as_commentable
end
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
enum role: [:user, :vip, :admin]
after_initialize :set_default_role, :if => :new_record?
has_many :posts, autosave: true, dependent: :destroy
def set_default_role
self.role ||= :user
end
end
t.references :user, index: true
最后一行代码就是我在迁移后使用的代码,我想那可能是我在哪里搞砸了?它应该是:user_id吗?
抱歉,忘了粘贴它显示的内容
#<User:0x007fa7845b9310>
当它应该是一个电子邮件地址时它给我的是什么。
def index
@posts = Post.all
end
<% @posts.each do |post| %>
<tr>
<td><%= post.user %></td>
<td><%= post.title %></td>
<td><%= post.content %></td>
<td><%= post.subject %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
答案 0 :(得分:0)
<%= post.user %>
只会输出user
对象
如果你的桌子和关联设置正确,您需要专门调用用户详细信息,如下所示:
<%= post.user.created_at %>
由于您收到错误,因此您可能会遇到以下几个问题:
- 您的关联(&amp;架构)可能不正确
- 您的
User
对象可能格式错误- 您的代码中的其他地方可能存在问题
醇>
<强>调试强>
我强烈建议您在index
视图中执行此操作:
<%= debug @post.user %>
这将输出整个user
对象,您可以在其中识别它拥有的属性,从而可以更好地查看它返回的内容。之后,发布返回的数据&amp;我们会更好地帮助