Ruby on rails Rails-发布模型/用户关联视图返回用户对象

Ruby on rails Rails-发布模型/用户关联视图返回用户对象,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,在我的帖子索引视图中,它以用户身份显示“#”,当尝试post.user.email时,它会给我一个错误,当在单视图页面上使用@post.user.email时,它会给我正确的电子邮件 我相信这意味着我的联想错了 class Post < ActiveRecord::Base belongs_to :user acts_as_commentable end class User < ActiveRecord::Base # Include default devise

在我的帖子索引视图中,它以用户身份显示“#”,当尝试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
class Post:新建记录?
有很多:posts,autosave:true,dependent::destroy
def set_默认_角色
self.role | |=:用户
结束
结束
t、 引用:用户,索引:true
最后一行代码是我在迁移后使用的代码,我想这可能就是我搞错的地方吧?应该是:user\u 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 %>
def索引
@posts=Post.all
结束
将只输出
用户
对象

如果表和关联设置正确,则需要专门调用用户详细信息,如下所示:

<%= post.user.created_at %>

这将输出整个
user
对象,您可以在其中识别它所具有的属性,从而更好地了解它将返回的内容。之后,发布返回的数据&我们将更好地提供帮助

您可以为索引操作代码添加Posts控制器吗。如果您试图引用视图页面中的变量,它们需要以“@”开头。此类“@”起始变量在控制器中定义,并可供视图访问。因此,如果在控制器中定义
@post
,它将在视图中可访问,但如果只定义
post
,它将仅在控制器中可访问,而在视图中不可访问。@steve我添加了post#索引和视图片段。
是用户对象的外观。因此,如果
post.user
返回
#
,那么您就知道该帖子属于某个用户,这很好。当你在每个`块中尝试
时,会出现什么样的错误?一个问题是,每次页面刷新时,数字都会发生变化,这是不好的。。。posts#show确实显示了正确的关联,并允许我调用post.user.email您是否收到类似“未定义的方法电子邮件用于Nil类”的错误?谢谢,如果其他人有类似问题,我在上面的评论员steve的帮助下找到了解决方案。我有一篇没有相关用户的帖子,这导致nilClass出现问题。
<%= debug @post.user %>