首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails路由到用户名而不是id

关于Rails路由到用户名而不是id,我们可以通过以下几个步骤来实现:

  1. config/routes.rb文件中,将默认的资源路由更改为将用户名用作参数,而不是id。例如,将resources :users更改为resources :users, param: :username
  2. User模型中,添加以下代码以使用用户名作为查找参数:
代码语言:ruby
复制
def to_param
  username
end
  1. User模型中,添加一个唯一性验证,以确保用户名是唯一的:
代码语言:ruby
复制
validates :username, presence: true, uniqueness: true
  1. User模型中,添加一个方法来查找用户名:
代码语言:ruby
复制
def self.find_by_username(username)
  where("LOWER(username) = ?", username.downcase).first
end
  1. ApplicationController中,添加一个before_action过滤器,以将用户名转换为小写:
代码语言:ruby
复制
before_action :convert_username_to_lowercase

def convert_username_to_lowercase
  params[:id] = params[:id].downcase if params[:controller] == 'users' && params[:action] == 'show'
end
  1. 在视图中,使用user_pathlink_to等方法时,传递用户名作为参数,例如:
代码语言:ruby
复制
<%= link_to user.username, user_path(user.username) %>

通过以上步骤,您可以将Rails路由更改为使用用户名而不是id。这将使URL更加易于理解和记忆,同时也可以提高SEO效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券