我有用户资源和模型。当我打开用户页面时,网址就像是/ users /:id。它是show action的默认URL。但是我想要这样的东西 - > 本地主机:3000/8-随机字母数字字符。 我的路线档案:
#for User model
resources :users
get 'signup' => 'users#new'
用户资源信息,
:id = 1
HTTP(Method) URL Action Named route Purpose
GET /users index users_path page to list all users
GET /users/1 show user_path(user) page to show user
GET /users/new new new_user_path page to make a new user (signup)
POST /users create users_path create a new user
GET /users/1/edit edit edit_user_path(user) page to edit user with id 1
PATCH /users/1 update user_path(user) update user
DELETE /users/1 destroy user_path(user) delete user
我希望/users/1
是/ 8位数字 - 字母 - 随机字符串。
答案 0 :(得分:0)
通常,您引用的网址称为永久链接,因此我们可以按照以下步骤开始:
首先,在您的Users表中添加永久链接字段
rails g migration AddPermalinkToUsers permalink:string
(在迁移过程中,您希望为此列添加索引以及唯一约束)
然后在您的用户模型中,创建一个before_create回调,为您的用户生成固定链接
class User < ActiveRecord::Base
before_create :generate_permalink
def to_param
self.permalink
end
private
# Generates an 8 character alphanumeric id
def generate_permalink
self.permalink = SecureRandom.hex(8)
end
end
现在告诉你的路线要遵守这个范例
resources :users, param: :permalink
内部app / controllers / users_controller.rb:
def set_user
@user = User.find_by(permalink: params[:permalink])
end