【发布时间】:2016-01-05 03:44:04
【问题描述】:
我有一个控制器 pages#dashboard,我已将其设置为 routes.rb
中的 user_rootdevise_for :users, controllers: { registrations: 'registrations' }
devise_scope :user do
get "/signup" => "devise/registrations#new"
get "/login" => "devise/sessions#new"
get "/logout" => "devise/sessions#destroy"
get "/:id" => "users#dashboard", :as => "user_root", :id => :username
end
我希望 URL 为 http://my_app.com/current_user_username
我已将 user.rb 模型中的 to_param 设置为:
def to_param
username
end
当我有如下链接时,这可以正常工作:
<%= link_to "MY ACCOUNT", user_root_path(current_user) %>
但在初始登录时,URL 是:http://my_app.com/username(明确表示“用户名”)而不是 http://my_app.com/current_user_username
我尝试将我的 to_param 设置为:
def to_param
"#{username}"
end
并且还尝试将我的 route.rb 设置为:
get "/:id" => "users#dashboard", :as => "user_root", :id => :username, :via => :get
这些都没有解决问题。
环境:Rails 4.2.5、Ruby 2.3.0、Devise gem 3.5.3
任何帮助将不胜感激。
【问题讨论】:
-
在你的控制器中,而不是使用
User.find(params[:id]),你现在需要使用User.find_by_username(params[:id])。您也可以结帐friendly_id gem
标签: ruby-on-rails ruby ruby-on-rails-4 devise