Ruby on rails 如何生成指向配置文件ID的链接?

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[

我有两个控制器-一个ProfilesController和一个UsersController。我有一个满是博客文章的页面,我希望每个页面都有一个指向创建它们的用户的个人资料的链接。我最近一直有点问题,我想重新开始,但不知道从哪里开始。我该怎么办

邮政总监:

 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) %>