什么是更好的 - 使用来自assets / javascript / * .js或* .js.erb视图的ajax调用?

时间:2013-08-15 20:16:42

标签: javascript ruby-on-rails ajax json erb

我正在使用rails从网络通信器编写管理服务。

所以我的问题: 用户点击按钮 - >组用户看到网络组 - >用户选择一些组 - >用户看到IP地址。我在页面上有两个表单,我需要在没有页面重新加载的情况下将数据发送到页面两次。

第一个服务器响应是网络组名称列表。

第二个服务器响应是其中一个组中的IP地址列表。

问题:

用户请求后哪个更好:

  1. JS.ERB方式

    获取数据,将其放入views / some_file.js.erb,在控制器中写入“respond_to {| format | format.js}”之类的内容。预期结果:浏览器接收客户端运行的js,js代码,js代码将数据附加到页面上的表格中。

  2. JS以资产/ javascript方式使用ajax

    以json格式向客户端发送数据。 js代码对服务器进行ajax调用,bowser接收json-data表单服务器,js将数据附加到页面上的表中。

  3. 请解释两种方式的优缺点。感谢。

1 个答案:

答案 0 :(得分:3)

我想说这样做的最好方法是向groups#names中的groups_controller.rb等另一个控制器操作发出AJAX请求,并让该操作呈现JSON。

app/assets/javascripts/script.js之类的javascript资源中执行此操作,如下所示:

$('#get-group-names-button').live('click', function(event) {
  event.preventDefault();
  $.ajax({
    url: "/groups/names",
    type: 'post',
    data: {'groupId': 'whatever'}
  });
});

然后在groups_controller中

def names
  if group_names
    render :json => group_names, :status => 200
  else
    render :status => 400
  end
end

然后在客户端上使用jquery done()解析该JSON响应,并使用javascript中所需的任何HTML格式附加数据。

使用像Backbone.js这样的客户端框架和handlebars这样的模板语言可以大大有助于此。

以下是railscast

生成的主题Ryan Bates