我正在使用rails从网络通信器编写管理服务。
所以我的问题: 用户点击按钮 - >组用户看到网络组 - >用户选择一些组 - >用户看到IP地址。我在页面上有两个表单,我需要在没有页面重新加载的情况下将数据发送到页面两次。
第一个服务器响应是网络组名称列表。
第二个服务器响应是其中一个组中的IP地址列表。
问题:
用户请求后哪个更好:
JS.ERB方式
获取数据,将其放入views / some_file.js.erb,在控制器中写入“respond_to {| format | format.js}”之类的内容。预期结果:浏览器接收客户端运行的js,js代码,js代码将数据附加到页面上的表格中。
JS以资产/ javascript方式使用ajax
以json格式向客户端发送数据。 js代码对服务器进行ajax调用,bowser接收json-data表单服务器,js将数据附加到页面上的表中。
请解释两种方式的优缺点。感谢。
答案 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