2009-10-01 25 views
0

如何将多态对象传递给另一个控制器?轨道通过url传递多态对象

例如从消息重定向/ 1/

到请求/新?object_type的=消息&的object_id = 1

,或者第二个例子,从文件/ 154/

到请求/新?object_type的=文件&的object_id = 154

redirect_to new_request_path(:object_type => params[:controller].classify, :object_id => params[:id]) 

对不对?

请求模型

belongs_to  :object , :polymorphic => true 

回答

1

嵌套你的路由,例如:

messages/1/requests/new 
files/154/requests/new 

redirect_to new_comments_request_path(Comment.find(1)) 

routes guide

+0

感谢嵌套路线的信息。在我的情况下,所有多态对象,如消息,文件,评论等得到重定向在相同的方法。是否有任何方式分别使用像“new_request_path(@ polymorphicobject)”而不是“new_comments_request_path”,“new_messages_request_path”等? – 2009-10-01 17:11:54

+0

你可以使用http://github.com/josevalim/inherited_resources,如果你使用它有一个url helper“new_resource_url” - 我想这就是你要找的。 – amitkaz 2009-10-02 12:41:04