Вложенный ресурс Rails 3.1 has_one: маршрутизация не генерирует "все" пути - PullRequest
2 голосов
/ 11 августа 2011

У меня есть отношение has_one:

# supplier.rb

  has_one :presentation
...

# presentation.rb

  belongs_to :supplier
...

и следующие для них вложенные маршруты:

# routes.rb

resources :suppliers do
  resource :presentation
end

работает rake routes дает:

    supplier_presentation POST ... {:action=>"create", :controller=>"presentations"}
 new_supplier_presentation GET ... {:action=>"new", :controller=>"presentations"}
edit_supplier_presentation GET ... {:action=>"edit", :controller=>"presentations"}
                           GET ... {:action=>"show", :controller=>"presentations"}
                           PUT ... {:action=>"update", :controller=>"presentations"}
                        DELETE ... {:action=>"destroy", :controller=>"presentations"}

Почему нет name_helper для действия шоу?

Я могу преодолеть проблему, выполнив что-то вроде:

resources :suppliers do
  resource :presentation, :except => :show do
    get "" => "presentations#show", as: "presentation"
  end
end

указание маршрута:

presentation_supplier_presentation GET ... {:controller=>"presentations", :action=>"show"}

но мы все сейчас не можем с этим справиться ..

ЛЮБЫЕ ПРЕДЛОЖЕНИЯ?

-

(отредактированный)

supplier_presentation_path(@supplier)

работает, но почему? ... Не появляется, когда rake routes выполняется на моей оболочке ...

Ответы [ 2 ]

3 голосов
/ 11 августа 2011

Я действительно не знаю, почему он не отображается, когда вы делаете rake routes, но вы пытались в своем коде сделать supplier_presentation_path(@supplier)? Он должен работать на основе ваших маршрутов.

0 голосов
/ 11 августа 2011

Тем не менее, это должно работать на вас.Попробуйте это:

link_to "Presentation", [@suplier, @presentation]

или

link_to "Presentation", suplier_presentation_path(@suplier, @presentation)
...