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
所以我有 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