Pertanyaan Cara menghapus awalan yang dihasilkan di routes.rb untuk params di jalur


Saat ini di rute saya, saya memiliki:

  # USER RESOURCES
  resources :users do
    resources :repositories
    patch 'change_password'
    get 'account_setting'
  end

Yang menghasilkan jalur ini untuk account_setting tindakan:

user_account_setting GET    /users/:user_id/account_setting(.:format)       users#account_setting

Yang saya inginkan adalah memiliki:

user_account_setting GET    /users/:id/account_setting(.:format)       users#account_setting

Keduanya pada dasarnya adalah hal yang sama, tetapi yang pertama memiliki a user_ awalan untuk id rel yang ditambahkan karena ada di blok sumber daya pengguna.

CATATAN SISI 

Saya tahu saya dapat dengan mudah menghapus account_setting aksi dari blok sumber daya pengguna dan tulis:

get 'users/:id/account_setting', to: 'users#account_setting'

Tapi aku tidak mau.


4
2018-05-29 11:12


asal


Jawaban:


Anda dapat melakukannya sebagai berikut:

 resources :users do
      member do
        get 'account_setting'
      end
    end

Untuk menambahkan rute anggota, tambahkan blok anggota ke dalam blok sumber daya.

Untuk dokumentasi, Anda bisa memeriksanya http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html


8
2018-05-29 11:22



Di Rails 4 Anda dapat mengubah nama params id gunakan saja

resources :users, param: :id do
    resources :repositories
    patch 'change_password'
    get 'account_setting'
  end

ini akan menghasilkan

/ users /: id / account_setting


-2
2018-05-29 11:22