Link_to 在通过 id 重定向到另一个视图的视图中

Link_to in view that redirects to another view by id

所以我有 2 个模型用户和书籍。书籍有 user_id,姓名,用户有姓名,地址。双方都有看法。我确实在用户视图中创建了一个 link_to 以重定向到书籍视图,但我想通过 id 重定向。

我的意思是,如果我点击 User1 link_to,我只想查看 user1 的书籍(只有 user_id:1 的书籍,如果可以在开头看到最近创建的,因此,如果我创建了 book.id=5 将首先出现,而 book.id=1 将是最后一个)。

用户模型:

Class User < ApplicationRecord
has_many :books

图书型号:

Class Book < ApplicationRecord
belongs_to :user

控制器书展:

def show 
 @book = Book.all
end

如果您还需要什么,请在评论中提问,我会进行编辑。如果我没有正确解释,也很抱歉。

在您的 books#index 控制器操作中

def index
  @books = Book.all
  @books = @books.where(user_id: params[:user_id]) if params[:user_id].present?
end

并且在您的 users#show 视图中

link_to "This user books", books_path(user_id: @user.id)

所以如果你去/books你会看到所有的书

但是如果您单击用户页面上的 link -- 您将只能看到该用户的图书

对我来说,最好的解决方案是保留默认方法并创建一个新方法:

def show_user_books
  @books = Book.where(user_id:params[:user_id]).order(created_at: :desc) if params[:user_id].present?

  redirect_to books_path 
end