我想通過使用來訪問我的模型的username屬性。Userparamsparams[:username]
在我的user模型上,我有
class User < ApplicationRecord
has_secure_password
validates :email, presence: true, uniqueness: { case_sensitive: false }
validates :username, presence: true, uniqueness: { case_sensitive: false }
validates :password, length: { minimum: 6 }, on: :create
def to_params
username
end
end
在我的 上config/routes.rb,我有:
Rails.application.routes.draw do
root "pages#home"
resources :users, path: "/", except: :index
end
這部分是我想要的。
產生的路線如下:
Prefix Verb URI Pattern Controller#Action
root GET / pages#home
users POST / users#create
new_user GET /new(.:format) users#new
edit_user GET /:id/edit(.:format) users#edit
user GET /:id(.:format) users#show
PATCH /:id(.:format) users#update
PUT /:id(.:format) users#update
DELETE /:id(.:format) users#destroy
該:id部分輸出的username位置User,因此我得到了/jim訪問用戶主頁時的路線。
讓我感到困擾的是我params[:id]在訪問username控制器時必須使用它。此外,當我嵌套這樣的資源時:
resources :users do
resources :posts
end
我得到了一條路線/users/:user_id/posts(.:format),:user_id例如username.
有沒有辦法可以設定它,所以我的路線看起來像:
Prefix Verb URI Pattern Controller#Action
root GET / pages#home
users POST / users#create
new_user GET /new(.:format) users#new
edit_user GET /:username/edit(.:format) users#edit
user GET /:username(.:format) users#show
PATCH /:username(.:format) users#update
PUT /:username(.:format) users#update
DELETE /:username(.:format) users#destroy
當我想訪問usernamefromparams時,我可以寫params[:username]嗎?
謝謝!
uj5u.com熱心網友回復:
有關更多詳細資訊,請查看 rails guides overriding-named-route-parameters
像這樣添加路線
Rails.application.routes.draw do
root "pages#home"
resources :users, path: "/", except: :index, param: :username do
resources :posts
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/477389.html
標籤:轨道上的红宝石
