Rails路由:as-block和device_for块

时间:2018-05-18 07:28:37

标签: ruby-on-rails devise routes

根据设计文档,我们可以使用以下内容覆盖默认会话路径:

as :user do
   get 'login', to: 'users/sessions#new', as: :new_user_session
   post 'login', to: 'users/sessions#create', as: :user_session
   delete 'logout', to: 'users/sessions#destroy', as: :destroy_user_session
end 

这将生成以下路线:

Helper Path                   URL        Controller
new_user_session_path        /login      users/sessions#new
user_session_path            /login      users/sessions#create
destroy_user_session_path    /logout     users/sessions#destroy

但是,如果没有将定义的路径包裹在as-blockdevise_scope块中,例如下面的,我们会生成相同的路径

get 'login', to: 'users/sessions#new', as: :new_user_session
post 'login', to: 'users/sessions#create', as: :user_session
delete 'logout', to: 'users/sessions#destroy', as: :destroy_user_session

我的问题是,为什么我们甚至需要as-block / device_for块?为什么不直接定义它? as-block的功能和好处是什么?

1 个答案:

答案 0 :(得分:0)

设计的RESTful路线如下:devise_for :users ...

在任何情况下,as都相当于devise_scope,并且它们用于指定您的自定义路线。

以下是此问题的documentation