【问题标题】:Change devise route - id to username将设计路线 - id 更改为用户名
【发布时间】:2023-03-10 22:36:01
【问题描述】:

如何将设计路线从 id 更改为用户名?

我希望路径类似于

http://www.site.com/users/username 

而不是

http://www.site.com/users/id

在我看来:

<span>posted by: <%= link_to( t.user.username, user_path( t.user.id ) ) %></span>

在我的用户模型中:

def to_param
    username
end

但是,我收到一个路由错误,指出 uninitialized constant UsersController

我在 routes.rb 中设置了这些路由:

devise_for :users

root :to => 'tickets#index'

resources :users do
    resources :tickets
end

resources :tickets

【问题讨论】:

    标签: ruby-on-rails routing devise


    【解决方案1】:

    在您的控制器中,搜索 username 而不是 id

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

    现在,在您看来,将 username 而不是 id 传递给 user_path 助手:

    <%= link_to t.user.username, user_path(t.user.username) %>
    

    【讨论】:

    • 当我使用此解决方案时,我可以转到 /users/username 但是在创建链接的视图中,我收到一条错误消息,指出“没有路由匹配 {:action=>” show", :controller=>"users"}" 即使用户控制器中有一个 'show' 操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多