【问题标题】:In routes, override scope-defined name from w/in the scope block在路由中,从范围块中覆盖范围定义的名称
【发布时间】:2017-11-02 21:08:58
【问题描述】:

假设您已经为一堆路由创建了一个范围:

scope 'author', as: 'author' do
  get 'search'     => 'author#search'
  get 'publishers' => 'author#publishers'
  get 'books'      => 'author#my_books', as: 'my_books'
  get 'stores'     => 'author#stores'
end

范围自然会为每个请求创建路径;例如,search 将有一个名为 author_search_path 的路径。

如何从范围块中覆盖路径中包含的范围?例如,books 被重命名为my_books,但作用域使其变为author_my_books_path。是否可以将路径重命名为my_books_path(没有author_)而不将行移到范围块之外?

因为author 不是资源,我不认为可以使用肤浅或集合。


注意:以上并非实际数据,仅为遵守隐私规则的示例。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rails-routing


    【解决方案1】:

    不,如果不将其移出scope 块,我想不出办法。这是我在 scope 块之后要写的内容:

    get 'author/books' => 'author#my_books', as: 'my_books'
    

    【讨论】:

    • 谢谢你,瑞恩。很遗憾,因为我希望重构代码以使其更具可读性,但这似乎会破坏路线。代码外的行看起来有些混乱。然后就是整个顺序/优先级 (FIFO) 因素。
    猜你喜欢
    • 2010-10-22
    • 2011-07-19
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2014-02-04
    • 2021-02-13
    相关资源
    最近更新 更多