gpt4 book ai didi

ruby-on-rails - 使用 base36 在 URL 中编码 Rails 模型 ID

转载 作者:行者123 更新时间:2023-12-04 03:35:27 25 4
gpt4 key购买 nike

我正在尝试在第一个答案 here 之后使用 base36 对 Rails 应用程序的模型 ID 进行编码但我不确定我需要做什么。

我应该把 id.to_s(36) 放在哪里?我需要向我的数据库添加一列吗?

我希望我的 URL 是 domain.com/user/rD4g35tQ 而不是 domain.com/user/3

ruby 1.9.3 rails 3.2.16

这是我在 Controller 中的表演 Action :

  def show
@user = User.find(params[:id])
end

编辑:这是我的创建操作:

  def create
@user = User.new(params[:user])
if @user.save
sign_in @user
redirect_to @user
else
render 'new'
end
end

最佳答案

to_param 就是为了这个。路由使用它来生成路径。默认情况下,它返回一个对象的 ID,但您可以在模型中将其覆盖为您想要的任何内容:

class User < ActiveRecord::Base

def to_param
id.to_s(36)
end

end

在 Controller 中,params[:id] 现在将是您想要的字符串,但您需要转换回真正的主键:

def show
@user = User.find(params[:id].to_i(36))
end

关于ruby-on-rails - 使用 base36 在 URL 中编码 Rails 模型 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20895015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com