开发者

Rails: generating URLs for actions in JSON response

开发者 https://www.devze.com 2023-02-04 22:51 出处:网络
In a view I am generating an HTML canvas of figures based on model data in an app. In the view I am preloading JSON model data in the page like this (to avoid an initial request back):

In a view I am generating an HTML canvas of figures based on model data in an app. In the view I am preloading JSON model data in the page like this (to avoid an initial request back):

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

Based on mouse (or touch) interaction I want to redirect to other parts of my app that are controller specific (such as view, edit, delete, etc.).

Rather than hard code the URLs in my JavaScript I want to generate them from Rails (which means it always adapts the latest routes).

It seems like I have one of three options:

  1. Add an empty attr to the model that the controller fills in with the appropriate URL (we don't want to use routes in the model) before the JSON is generated
  2. Generate custom JSON where I add the different URLs manually
  3. Generate the URL as a template from Rails and replace the IDs in JavaScript as appropriate

I am starting to lean towards #1 for ease of implementation and maintainability.

Are there any other options that I am mis开发者_开发知识库sing? Is #1 not the best?

Thanks!

Chris


I wrote a bit about this on my blog: Rails Dilemma: HATEOAS in XML/JSON Responses.

I came to similar conclusions. There's no incredibly clean way to do it as far as I know, because by default the model is responsible for creating a JSON representation of itself, but generating URLs is strictly a controller/view responsibility.

Feel free to look over my thoughts/conclusions and add comments here or there.

0

精彩评论

暂无评论...
验证码 换一张
取 消