Ruby on Rails:如何将动态数据从服务器传输到javascript?

时间:2013-04-26 15:00:53

标签: javascript ruby-on-rails client-server

RoR具有渲染视图的控制器。有一天,我希望控制器不仅可以呈现特定视图,还可以在渲染后使用来自控制器(例如 @product )的数据运行一些javascript代码。


1。内联javascript

所以我去了 products / show.html.erb 并写了类似的内容:

<%= javascript_tag "alert('#{@product.name} is just awesome!')" %>


2。具有服务器数据的资产

但我们都是长大的男孩,并且知道不显眼的javascript ,所以我在我的布局中加入了一些javascript文件:

<%= javascript_include_tag "#{params[:controller]}/#{params[:action]}" %>

然后转到 app / assets / javascripts / products / show.js.erb 并写道:

$(document).ready(function(){
  alert('<%= @product.name%> is just awesome!');
});

但是我记得资产在生产中被预先编译并继续思考。


3。 HTML数据属性

将一些数据传递给javascript的另一种方法是在视图文件中使用html5数据属性:

<div class="product" data-product-name="<%= @product.name %>">

然后在你的资产中你可以写下这样的东西:

$(document).ready(function(){
  $('*[data-product-name]').each(
    alert($(this).data('product-name') + ' is just awesome!');
  );
});


4。还有一个服务器请求

无论如何,如果您希望能够缓存视图文件和资产,似乎将数据传输到javascript的唯一方法是使用额外的Ajax请求。我想知道创建一个将 @product 发送给客户的单独操作是否是一个好习惯?

有人可以说,在呈现视图时将数据从服务器发送到javascript的最好方法是什么?

0 个答案:

没有答案