ruby-on-rails - 如何从表单创建重定向 URL
问题描述
用户有一个列表。例如,用户 1 有清单 2。当前 URL 将如下所示:
http://localhost:3000/listings/2
我想让用户为他们的列表自定义他们自己的反向链接,如下所示:
http://localhost:3000/uniquelistingname
理想情况下,我希望列表 URL 保持唯一,但重定向就可以了。
我找到了友好的 URL gem,但我不确定它是否完全符合我的需要。它似乎允许 URL 作为参数,而不是创建一个完全自定义的参数,它需要是唯一的。你对我应该如何处理这件事有什么建议?
解决方案
一种选择是为其创建单独的模型,例如命名UserListingLink
如下:
class UserListingLink < ApplicationRecord
belongs_to :user
belongs_to :listing
validates :link, uniqueness: true
end
并且只允许用户编辑它。然后你可以在路由中重定向你的用户(把它放在最底部,这样其他路由,比如 localhost:3000/posts 继续工作):
路线.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
推荐阅读
- c# - “不允许从 MonoBehaviour 构造函数调用加载”在不从 MonoBehaviour 继承的脚本上
- c# - 在 VS2015/C# 中使用存储过程创建 ADO.NET 只读 SQL Server 数据集
- php - 无法从数据库中获取单个字段
- css - 如何设置滚动的大小来扩大屏幕的大小?
- html - Listitem 真正居中,其他项目围绕它流动
- mysql - SQL - 不存在与加入
- python - 从 TTK 组合框列表中删除项目
- powershell - 尝试由没有管理员权限且管理员凭据在脚本中的用户运行具有管理员权限的 PowerShell 脚本
- c++ - C++ Builder 10.3.3 [ilink32 错误] 致命:无法打开 .\Win32\Debug\TabbedApplication.exe(程序仍在运行?)
- asp.net-mvc - 从 ASP.Net MVC Web 应用程序调用 ASP.Net Web api。MVC Web 客户端未正确构建 URL,因此找不到