【问题标题】:How to suppress Rails's auto naming routes?如何抑制 Rails 的自动命名路由?
【发布时间】:2014-11-26 15:03:52
【问题描述】:

从表格 3 开始,Rails 会自动命名以下路线

match 'list/my/pets", :to => 'pets_controller#cat'

list_my_pets

我怎样才能摆脱这个名字?

它可能会与我稍后定义的其他命名路线发生冲突,并且碰巧有这个名称。

例如,我可以定义:

scope :controller => :company do
  match 'groups', :action => :groups  # I don't want it to be named 'groups' !
  ...and a lot more ...
end

后来我定义:

resources :groups

我真正需要的命名路线。

当然,更改顺序是可行的,但是我们必须非常小心顺序。

有没有办法明确禁止命名?

【问题讨论】:

    标签: ruby-on-rails routes


    【解决方案1】:

    如果您想有效地“取消命名”路线。使用as: nil

    【讨论】:

      【解决方案2】:

      您可以使用as: (documentation) 覆盖默认值。例如:

      get 'list/my/pets' => 'pets#cat', as: :whatever_alias_i_want
      

      【讨论】:

      • 感谢您的回复。我知道 :as 选项。但我想要的是使路线未命名。
      • 路由的名称实际上是它的唯一 ID。在您使用的示例中,您可以使用scope ... as: :my_namepace 命名路由。这样,该范围内的所有名称都将以 my_namespace 为前缀,这将避免冲突。因此,您示例中的路由名称将自动为 my_namespace_groups
      • 谢谢,皮特!您的回复也很有帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多