这里是rails的新手。我的协会设置如下,它可能不是理想的方式,因此非常欢迎任何推荐:
User has many posts (posts table has user_id)
User has one profile (profile table has user_id)
在我的帖子控制器视图中,我想显示属于拥有该帖子的用户的个人资料(profile.name)的名称。
我天真的第一个猜测是<%= @post.user.profile.name %>
,但这显然不起作用。
这是我的模型中定义的关联:
class User < ActiveRecord::Base
has_many :posts
has_one :profile
end
class Post < ActiveRecord::Base
belongs_to :user
end
class Profile < ActiveRecord::Base
belongs_to :user
end
这是视图中的代码:&lt;%= @ post.user.profile.name%&gt;
错误是未定义的方法配置文件
答案 0 :(得分:0)
您必须在模型中提及以下内容 user.rb
has_many :posts
has_one :profile
profile.rb
belongs_to :user
post.rb
belongs_to :user
然后<%= @post.user.profile.name %>
应该有用。
如果您的数据仍然存在问题
答案 1 :(得分:0)
您需要在belongs_to
和posts
模型中定义profile
关系才能实现此功能。例如:
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :user
end
同样使用profile
模型