我有一个名为contacts
的控制器/模型,我有两个与联系人有多对多关系的模型,即:users
和franchises
。我一直在玩嵌套路线,我可以让/ users / 1 /联系人工作正常,但如果我想做/特许经营/ 1 /联系人怎么办?有没有一种动态的解决方法?或者我需要做什么
if FRANCHISE
<%= link_to "Edit", edit_franchise_contact_path(@contact) %>
elsif USER
<%= link_to "Edit", edit_user_contact_path(@contact) %>
end
我能看到的另一种方法是在相应的控制器中创建一个可以处理联系人管理的方法。我很感激帮助。
答案 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