繁体   English   中英

模型的虚荣网址

[英]Vanity URL's for Model

我想在应用程序中的模型中添加虚荣网址。 理想情况下,如果用户没有用户名,我希望它回退到ID。 这是我目前构建的解决方案,但无法正常工作。

User.rb

  def to_param
     username || id
  end

用户控制器

@user = if params.key?(:username)
    User.find_by_name(params[:username])
else
    User.find(params[:id])
end

路线

match "/:username" => "users#show", via: :get

无论您实际上是传入的用户名还是ID,您的路由都会生成用户名参数。因此,在控制器中,您不应尝试使用params[:id] 除此之外,我看不到您的代码有什么问题。

尝试这个: -

get ':id', to: 'users#show', constraints: lambda { |request| User.where(:username => request.path_parameters[:id]).exists? }

用户控制器

@user = User.find_by_username(params[:id])
unless @user
  @user = User.find(params[:id])
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM