首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveResource :多态路由

ActiveResource :多态路由
EN

Stack Overflow用户
提问于 2011-04-01 12:50:38
回答 1查看 796关注 0票数 1

使用ActiveResource,Ruby on Rails,有一种干净利落的方法来做以下事情:

我有房子ActiveResource模型和椅子ActiveResource模型,两者都可以评论。我想对这两个都重用注释ActiveResource模型。

代码语言:javascript
复制
# 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

我只能想到以下几点:

代码语言:javascript
复制
class Comment < ActiveResource::Base
  self.site = "http://3rd.party.restful.api.com"
  self.prefix = "/admin/:prefix_path/"
end

然后执行以下操作:

代码语言:javascript
复制
comment = Comment.new(:text => "some text", :prefix_path => "houses/1/chairs/3")

请阻止我这样做。

EN

回答 1

Stack Overflow用户

发布于 2011-04-01 13:05:12

我想你是在问,你是否可以在只使用一个模型的情况下为每个模型定义路由,对吗?

有两个选项:

首先,最简单的方法:只需定义两次路由。

代码语言:javascript
复制
resources :houses do
  resources :comments
  resources :chairs do
     resources :comments
  end
end

routes文件不会在意您告诉它可以从两个地方访问注释模型,它基本上会像您预期的那样工作--视图将只存在于' comments‘文件夹中。

第二种,也是更复杂的方法,定义一个你想要嵌套的namespace。然后,您将得到两个控制器:CommentsControllerChairs::CommentsContoller。您也可以创建两组视图,但不必这样做(第二个控制器只需显式地呈现第一个控制器的视图)。

要很好地解释名称空间是如何工作的,可以查看the answer where I originally learned about it

值得注意的是,第二种方法很好,因为您可以根据模型的访问方式对模型的表示方式进行一些细微的调整,但在DB中仍然只有一个模型。

祝好运!我很乐意尝试在评论中回答问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5509272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档