关于Rails路由到用户名而不是id,我们可以通过以下几个步骤来实现:
config/routes.rb
文件中,将默认的资源路由更改为将用户名用作参数,而不是id。例如,将resources :users
更改为resources :users, param: :username
。User
模型中,添加以下代码以使用用户名作为查找参数:def to_param
username
end
User
模型中,添加一个唯一性验证,以确保用户名是唯一的:validates :username, presence: true, uniqueness: true
User
模型中,添加一个方法来查找用户名:def self.find_by_username(username)
where("LOWER(username) = ?", username.downcase).first
end
ApplicationController
中,添加一个before_action
过滤器,以将用户名转换为小写:before_action :convert_username_to_lowercase
def convert_username_to_lowercase
params[:id] = params[:id].downcase if params[:controller] == 'users' && params[:action] == 'show'
end
user_path
或link_to
等方法时,传递用户名作为参数,例如:<%= link_to user.username, user_path(user.username) %>
通过以上步骤,您可以将Rails路由更改为使用用户名而不是id。这将使URL更加易于理解和记忆,同时也可以提高SEO效果。
领取专属 10元无门槛券
手把手带您无忧上云