一个用户有一个列表。例如,用户1的清单2。当前的URL如下所示:
http://localhost:3000/listings/2
我想让用户为自己的列表自定义反向链接,如下所示:
http://localhost:3000/uniquelistingname
理想情况下,我希望列表URL像唯一的URL一样,但是可以进行重定向。
我找到了友好的URL宝石,但不确定它是否完全符合我的需求。与创建完全自定义的URL(它必须是唯一的)相反,它似乎允许将URL作为参数。您对我应该如何处理有什么建议?
答案 0 :(得分:0)
一种选择是为其创建单独的模型,例如名为UserListingLink
的模型,
class UserListingLink < ApplicationRecord
belongs_to :user
belongs_to :listing
validates :link, uniqueness: true
end
,只允许用户对其进行编辑。然后,您可以在路由中重定向用户(将其放在最底部,以便其他路由(例如localhost:3000 / posts都可以正常工作)):
routes.rb:
get '/:user_link', to: 'user_listings#show'
,然后在该控制器中重定向或显示您想要的任何内容:
class UserListingsController < ApplicationController
def show
listing = UserListingLink.find_by(link: params[:user_link]).listing
redirect_to listings_path(listing)
end
end