更好的方法是使用assets/javascript/*.js或*.js.erb视图中的ajax调用
What is better - use ajax calls from assets/javascript/*.js or *.js.erb views?
我正在使用rails从网络通信器编写一个管理服务。
所以我的问题是:用户点击一个按钮->组用户看到网络组->用户选择一些组->用户看到IP地址。我在页面上有两个表单,我需要在不重新加载页面的情况下向页面发送两次数据。
第一个服务器响应是网络组名称的列表。
第二个服务器响应是其中一个组中的IP地址列表。
问题:
在用户请求后做哪个更好:
-
JS.ERB方式
获取数据,将其放入views/some_file.js.erb中,在控制器中编写类似于"responsd_to{|format|format.js}"的内容。预期结果:浏览器接收到js,js代码在客户端运行,js将数据附加到页面上的表中。
-
JS与资产中的ajax/javascript方式
以json格式向客户端发送数据。js代码对服务器进行ajax调用,bowser从服务器接收json数据,js将数据附加到页面上的表中。
请解释一下这两种方式的优缺点。谢谢
我认为最好的方法是向groups_controller.rb
中的另一个控制器操作(如groups#names
)发出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这样的客户端框架和像handlebas这样的模板语言得到极大的帮助。
以下是Ryan Bates 制作的关于该主题的railscast
- Rails 3.2 js.erb文件转义js
- Js.erb VS按钮标记-不'不起作用.为什么?
- js.erb文件未呈现其内容
- 如何使用 Ruby 在 Javascript (js.erb) 中设置 url
- Rails:如何在jQuery(.js.erb)中调用“create”操作
- js erb 内的 Rails 会话为空
- 在Rails中使用remote:true在Chrome中有效,但在Safari中无效——从js.erb文件调用succe
- js.erb文件中提供给RegExp构造函数的标志无效
- 如何在我的create.js.erb中重置/清除表单
- Rails js.erb文件未执行
- js.erb格式的控制器测试
- 使用控制器在conditional.js.erb文件中设置变量
- 我的 update.js.erb 文件仅在第一次单击按钮时运行,而不在后续单击时运行(单击时更改按钮的类和值)
- 在 Ajax 中创建 RoR 链接 在 .js.erb 文件中调用
- Rails 3 嵌入式小部件:show.js.erb 似乎不起作用
- js.erb 呈现到布局中,而不是执行
- 将变量传递给 js.erb 文件
- Ruby on Rails 在 js.erb 中渲染 json
- 如何在 js.erb 中删除 “ 以渲染 JavaScript Rails
- 如何在 Rails 3 上从 js.erb 调用 coffeescript 函数以及如何理解 Javascript 中的