Ruby on rails Rails 4显示来自多个表的数据
我知道这很容易,但我不能让它工作。我正在创建一个用户可以创建帖子的网站。我想显示那些帖子以及用户名,用户名包含在用户表中。我看不出来!我得到这个错误:Ruby on rails Rails 4显示来自多个表的数据,ruby-on-rails,ruby,postgresql,Ruby On Rails,Ruby,Postgresql,我知道这很容易,但我不能让它工作。我正在创建一个用户可以创建帖子的网站。我想显示那些帖子以及用户名,用户名包含在用户表中。我看不出来!我得到这个错误: undefined method `name' for nil:NilClass 这是我的密码: 型号: class User < ActiveRecord::Base has_many :posts\ class Post < ActiveRecord::Base belongs_to :user class用户
undefined method `name' for nil:NilClass
这是我的密码:
型号:
class User < ActiveRecord::Base
has_many :posts\
class Post < ActiveRecord::Base
belongs_to :user
class用户
控制器:
class PostsController < ApplicationController
def index
@posts = Post.includes(:user).all.sort_by &:created_at
@posts.reverse!
end
class UsersController < ApplicationController
def index
@users = User.all.order(:name)
end
class PostsController
视图:
似乎可以在应用程序中不使用用户添加帖子。因此,您可以将其替换为post.user.try!(:name)
另外,你最好使用
.order(:created_at)
而不是sort by(&:created_at)
当你在rails控制台中执行Post.includes(:user).all.sort by(&:created_at).first
和Post.includes(:user).all.sort by(&:created_at).first.user.name
)时会得到什么?如果你的对象确实相关,这样就不需要包括用户Post.first.user
应返回用户对象。看起来它为您返回了nil,因此您的关联未保存。这可能是因为您的数据库中有一条post记录尚未分配给任何用户。在rails控制台中运行此查询,查看是否有:Post。where(user\u id:nil)
@MandyM,您可以为异常添加回溯吗?您可以用
替换当前输出,最后检查一次。你可以找到失败的帖子,错过了。您可以使用.order(在::desc创建)
并删除。反向代码>。我刚检查过。我的所有帖子都有关联的用户,我的所有用户都有名字。
<% @posts.each do |post| %>
<%= post.user.name %><BR><BR>
<%= post.post_content %><BR><BR>
<% end %>