如何从表单创建重定向URL

时间:2018-11-07 05:24:36

标签: ruby-on-rails

一个用户有一个列表。例如,用户1的清单2。当前的URL如下所示:

http://localhost:3000/listings/2

我想让用户为自己的列表自定义反向链接,如下所示:

http://localhost:3000/uniquelistingname

理想情况下,我希望列表URL像唯一的URL一样,但是可以进行重定向。

我找到了友好的URL宝石,但不确定它是否完全符合我的需求。与创建完全自定义的URL(它必须是唯一的)相反,它似乎允许将URL作为参数。您对我应该如何处理有什么建议?

1 个答案:

答案 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