使用ActiveResource,Ruby on Rails,有一种干净利落的方法来做以下事情:
我有房子ActiveResource模型和椅子ActiveResource模型,两者都可以评论。我想对这两个都重用注释ActiveResource模型。
# ActiveResource wraps HTTP POST Requests to the following
# And then parsess the responses, and then creates instances of my ActiveResource models
POST http://3rd.party.restful.api.com/admin/houses/1/comments
POST http://3rd.party.restful.api.com/admin/houses/1/chairs/3/comments我只能想到以下几点:
class Comment < ActiveResource::Base
self.site = "http://3rd.party.restful.api.com"
self.prefix = "/admin/:prefix_path/"
end然后执行以下操作:
comment = Comment.new(:text => "some text", :prefix_path => "houses/1/chairs/3")请阻止我这样做。
发布于 2011-04-01 13:05:12
我想你是在问,你是否可以在只使用一个模型的情况下为每个模型定义路由,对吗?
有两个选项:
首先,最简单的方法:只需定义两次路由。
resources :houses do
resources :comments
resources :chairs do
resources :comments
end
endroutes文件不会在意您告诉它可以从两个地方访问注释模型,它基本上会像您预期的那样工作--视图将只存在于' comments‘文件夹中。
第二种,也是更复杂的方法,定义一个你想要嵌套的namespace。然后,您将得到两个控制器:CommentsController和Chairs::CommentsContoller。您也可以创建两组视图,但不必这样做(第二个控制器只需显式地呈现第一个控制器的视图)。
要很好地解释名称空间是如何工作的,可以查看the answer where I originally learned about it。
值得注意的是,第二种方法很好,因为您可以根据模型的访问方式对模型的表示方式进行一些细微的调整,但在DB中仍然只有一个模型。
祝好运!我很乐意尝试在评论中回答问题!
https://stackoverflow.com/questions/5509272
复制相似问题