class AjaxesController < ApplicationController
def index
@teacher=Teacher.find(1);
@teacher_name=@teacher.name
end
def ajax
end
end
我在 ajax.html.erb 中定义 div 标签
<div id="name"></div>
之后我在 ajax.html.erb 中请求 index 这个 action 就可以把,我的 index 里有的@变量就可以写到 ajax.html.erb 中的 div 标签中了吗?例:
xmlRequest.open("GET", "http://localhost:3000/ajaxes/index");
我是这么想的呢但不知道对不对,希望我的思路么有错:)
#1 楼 @douya0808 这种想法不对。建议楼主先了解 ajax 是什么(http://www.w3school.com.cn/ajax/ ),再学一下 ajax 在 rails 中的应用(http://rubyer.me/blog/999/)
楼主你好,rails 框架并非 EJB,不支持类似 RPC 的方式传输和调用变量,rails 是一个轻量框架,并且通过 http 传输的内容都是文本,如果你想通过 ajax 传变量,可以使用 JSON 的方式进行序列化。然后在客户端进行解析. 另外,我觉得楼主似乎应该深入理解一下 rails 的基本 pattern 以及 restful 方式,AWDWR 那本书上有详细解说,也可以参照 rails 的 guide http://guides.rubyonrails.org/ajax_on_rails.html
@douya0808 一个简单的实现,希望可以给你一点参考
$.fn.sync = function(url){
class_or_id = "#";
$.getJSON(url, function(resp){
for (key in resp){
var value = resp[key];
$(this).find(class_or_id + key).text(value);
}
});
}
// 类似这样调用一下
$("#teacher").sync("ajaxes/index");
我用 JQuery 还是不行 用 chrome 总提示 Uncaught ReferenceError: $ is not defined 下了个 jQuery 的库放进项目还是不行 我的环境是 Rails 3.1.1 不知道为什么不支持 jQuery
但是纯 javascript 实现的 ajax 倒是可以实现功能
各个版本变化真大 网上说还有用 prototype 的 -.-
好吧 服了 <%= javascript_include_tag "jquery.min.js" %> <%= javascript_include_tag "time.js" %> jquery.min.js 的加载要写在自己的 js 的前面 不然不认识 jQuery 不是说 3.X 开始支持 jQuery 了么 哎呀 支持的不到位啊 我还得自己下库 自己导-.-
好吧 我实践出 只要 application.js 中的//= require_jquery 这一行在 就可以应用上 jquery 无需导库也无需改名 都是默认自动的=。=我还自己改了一天多 我真二 .