【问题标题】:Add custom new routes to rails resources向 Rails 资源添加自定义新路线
【发布时间】:2016-09-23 18:10:02
【问题描述】:

我的路由文件,我定义了一个资源

namespace :admin do
  resources :invoices, only: [:index, :new]
end

然后我有一个路由规则和相应的路径助手 new_admin_invoice_path

new_admin_invoice GET /admin/invoices/new(.:format) admin/invoices#new

但是我怎样才能再添加两个新规则,让你看起来像

new_admin_incoming_invoice GET /admin/invoices/new/incoming(.:format) admin/invoices#new {:type=>:incoming}
new_admin_outgoing_invoice GET /admin/invoices/new/outgoing(.:format) admin/invoices#new {:type=>:outgoing}

我尝试手动添加它们

resources :invoices, only: [:index, :new] do
  get 'new/incoming', on: :collection, action: :new, type: :incoming
  get 'new/outgoing', on: :collection, action: :new, type: :outgoing
end

但是得到了错误的结果

new_incoming_admin_invoices GET /admin/invoices/new/incoming(.:format) admin/invoices#new {:type=>:incoming}
new_outgoing_admin_invoices GET /admin/invoices/new/outgoing(.:format) admin/invoices#new {:type=>:outgoing}

我怎样才能通过路径助手获得我需要的确切路线?

【问题讨论】:

    标签: ruby-on-rails routes


    【解决方案1】:

    这里是官方指南中的简易 Rails 方式

    resources :invoices, only: [:index] do
      get 'incoming', on: :new, type: :incoming, action: :new
    end
    

    结果

    incoming_new_admin_invoice GET /admin/invoices/new/incoming(.:format) admin/invoices#new {:type=>:incoming}
    

    【讨论】:

      【解决方案2】:

      尝试使用这样的范围:

      scope "/admin" do resources :invoices end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-17
        • 2011-07-10
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 1970-01-01
        • 2022-09-27
        相关资源
        最近更新 更多