Rails:为JSON响应中的操作生成URL

时间:2011-01-17 16:50:28

标签: ruby-on-rails json

在视图中,我根据应用中的模型数据生成HTML图形画布。在视图中,我在页面中预加载JSON模型数据(为了避免初始请求):

<script type="text/javascript" charset="utf-8"> 
  <% ActiveRecord::Base.include_root_in_json = false -%>
  var objects = <%= @objects.to_json(:include => :other_objects) %>;
  ...

基于鼠标(或触摸)交互,我想重定向到我的应用程序中控制器特定的其他部分(例如查看,编辑,删除等)。

我不想在我的JavaScript中对URL进行硬编码,而是想从Rails中生成它们(这意味着它总是适应最新的路由)。

似乎我有以下三种选择之一:

  1. 在生成JSON之前,使用适当的URL(我们不想在模型中使用路由)向模型添加空attr
  2. 生成自定义JSON,我手动添加不同的网址
  3. 从Rails生成URL作为模板,并根据需要替换JavaScript中的ID
  4. 为了便于实施和维护,我开始倾向于#1。

    我还缺少其他选择吗? #1不是最好的吗?

    谢谢!

    克里斯

1 个答案:

答案 0 :(得分:3)

我在我的博客上写了一些关于此的内容:Rails Dilemma: HATEOAS in XML/JSON Responses

我得出了类似的结论。据我所知,没有非常简洁的方法可以做到这一点,因为默认情况下,模型负责创建自己的JSON表示,但生成URL严格来说是控制器/视图责任。

随意查看我的想法/结论并在此处或那里添加评论。