到单个控制器的多个路由

时间:2010-11-03 17:15:48

标签: ruby-on-rails routes

我有一个名为contacts的控制器/模型,我有两个与联系人有多对多关系的模型,即:usersfranchises。我一直在玩嵌套路线,我可以让/ users / 1 /联系人工作正常,但如果我想做/特许经营/ 1 /联系人怎么办?有没有一种动态的解决方法?或者我需要做什么

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

我能看到的另一种方法是在相应的控制器中创建一个可以处理联系人管理的方法。我很感激帮助。

1 个答案:

答案 0 :(得分:1)

多态网址怎么样?

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