Ruby on rails 如何生成指向配置文件ID的链接?
我有两个控制器-一个ProfilesController和一个UsersController。我有一个满是博客文章的页面,我希望每个页面都有一个指向创建它们的用户的个人资料的链接。我最近一直有点问题,我想重新开始,但不知道从哪里开始。我该怎么办 邮政总监:Ruby on rails 如何生成指向配置文件ID的链接?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有两个控制器-一个ProfilesController和一个UsersController。我有一个满是博客文章的页面,我希望每个页面都有一个指向创建它们的用户的个人资料的链接。我最近一直有点问题,我想重新开始,但不知道从哪里开始。我该怎么办 邮政总监: def index if params[:search] @posts = Post.search(params[:search]).order("created_at DESC").paginate(page: params[
def index
if params[:search]
@posts = Post.search(params[:search]).order("created_at DESC").paginate(page: params[:page], per_page: 5)
else
@posts = Post.all.order('created_at DESC').paginate(page: params[:page], per_page: 5)
end
end
配置文件模型:
class Profile < ApplicationRecord
belongs_to :user
end
类配置文件
用户模型:
class User < ApplicationRecord
has_secure_password
validates :username, uniqueness: true
has_many :posts, foreign_key: :author
has_many :comments, foreign_key: :author
has_one :profile, foreign_key: :user
after_create :build_profile
def build_profile
Profile.create(user: self) # Associations must be defined correctly for this syntax, avoids using ID's directly.
end
end
BTW not using Devise
class用户
首先,我们得到每个帖子的object配置文件,如下所示(您应该在rails控制台中尝试):
之后,我们使用profile\u path
生成指向profiles\show
的链接(当然,您需要定义一个控制器profile
)
我经常在视图
中执行,而不是在控制器
中执行
快乐编码 您的SQL表怎么样?如果您的Posts表有一个user\u id字段,那么您最好通过id(user\u id)搜索用户并通过以下方式处理链接:
<%= link_to 'Post Owner', user_path(post.user_id) %>
检查它是否对您有效,然后告诉我。尝试在控制台中获取@posts
,然后再获取@posts。首先。用户
。如果它返回一个user对象,那么您应该能够计算出如何获取任何post的用户及其属性。我使用的是@posts.each do|post |循环。在这种情况下,您的答案仍然有效吗?是的,您可以通过对象post
调用user
。(如果帖子属于用户)它属于:作者,类名:“用户”
profile_path(@posts.first.user.profile)
<%= link_to 'Post Owner', user_path(post.user_id) %>