Несколько маршрутов на один контроллер - PullRequest
1 голос
/ 03 ноября 2010

У меня есть контроллер / модель с именем contacts, и у меня есть 2 другие модели, которые имеют много-много взаимосвязей с контактами, например: users и franchises. Я играл с вложенными маршрутами и могу заставить / users / 1 / contacts работать нормально, но что если я захочу сделать / franchises / 1 / contacts? Есть ли динамичный способ решить эту проблему? или мне нужно сделать

if FRANCHISE
  <%= link_to "Edit", edit_franchise_contact_path(@contact) %>
elsif USER
  <%= link_to "Edit", edit_user_contact_path(@contact) %>
end

Единственный другой метод, который я вижу, - это создание метода в соответствующем контроллере, который может управлять контактами. Я ценю помощь.

1 Ответ

1 голос
/ 03 ноября 2010

А как насчет полиморфных URL?

polymorphic_url (record_or_hash_or_array, options = {})

Constructs a call to a named RESTful route for the given record and returns the resulting URL string. For example:

# calls post_url(post)
polymorphic_url(post) # => "http://example.com/posts/1"
polymorphic_url([blog, post]) # => "http://example.com/blogs/1/posts/1"
polymorphic_url([:admin, blog, post]) # => "http://example.com/admin/blogs/1/posts/1"
polymorphic_url([user, :blog, post]) # => "http://example.com/users/1/blog/posts/1"
polymorphic_url(Comment) # => "http://example.com/comments"

В вашем случае: polymorphic_url([@franchise_or_user, @contact], :action => :edit)

Или просто: edit_polymorphic_url([@franchise_or_user, @contact])

См .: http://api.rubyonrails.org/classes/ActionDispatch/Routing/PolymorphicRoutes.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...