2015-01-03 3 views
0

у меня есть основные настройки:рельсов создать полиморфный URL с полиморфными моделями

class Document < ActiveRecord::Base 
    belongs_to :documentable, polymorphic: true 
end 

class Contact < ActiveRecord::Base 
    has_many :documents, as: :documentable 
end 

class Case < ActiveRecord::Base 
    has_many :documents, as: :documentable 
end 

Сейчас в _index.html.erb из моих документов, просмотр, я хочу сделать следующее:

<%= link_to "New Document", polymorphic_path([:new, @documentable, Document.new]) %> 

где @documentable будет либо экземпляром Contact, либо Case.

Я ожидаю, что выше будет генерировать URL-адрес, например new_contact_document_path, но вместо этого он пытается создать URL-адрес, например new_documents_path.

Что я могу делать неправильно?

ответ

0

Попробуйте

<%= link_to "New Document", new_polymorphic_path([@documentable, Document]) %> 

Примечания два отличия здесь от вашего публикуемую кода:

  1. Используйте «приставку» polymorphic_path помощника вместо того, чтобы встроить новое действие внутри переданного массива
  2. Использования Document вместо от Document.new, который, как представляется, является предпочтительным подходом

Для получения более подробной информации см. the ActionDispatch docs.

+0

Это также работает для многих вложенных маршрутов: new_polymorphic_path ([@ model1, @ model2, Model3]) – Donato

Смежные вопросы