【问题标题】:Rails Routes: as-block and device_for blockRails 路由:as-block 和 device_for 块
【发布时间】:2018-05-18 07:28:37
【问题描述】:

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

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的作用和好处是什么?

【问题讨论】:

    标签: ruby-on-rails devise routes


    【解决方案1】:

    用于设计的 RESTful 路由如下所示:devise_for :users ...

    无论如何,as 等同于devise_scope,它们旨在指定您的自定义路由。

    这是这个问题的documentation

    【讨论】:

    • 是的,我知道它们是用来指定自定义路由的。我的问题是为什么我需要将它包装在 as 块中,即使我没有将它包装在 as 块中,它也会产生相同的结果
    • @Tikiboy 因为在 r/ror 中,您可以通过不同的方式实现目标。但我认为as 的方式更具可读性,而且:github.com/bbatsov/rails-style-guide#routing
    • @MichaelArkhipov - 你是说它纯粹是装饰性的。这不是一个非常令人满意的答案。
    猜你喜欢
    • 2016-05-20
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    相关资源
    最近更新 更多