ActiveJax是一个ruby on rails的插件,可以把你的ActiveRecord对象的查询方法直接暴露给客户端的JavaScript来调用,原理非常近似Java的AJAX框架DWR,但是要比DWR简单好用:
class
Author
<
ActiveRecord::Base
active_jax
def find_by_name(n)
find(:all, :conditions => {:name => n})
end
end
active_jax
def find_by_name(n)
find(:all, :conditions => {:name => n})
end
end
在model对象上面直接声明active_jax就可以把自己声明的find_by_name方法暴露出去,然后在JavaScript里面引用:
ActiveJax.Author.find_by_name(
"
Nicholas Schlueter
"
).
each( function (author) {
alert(author.name);
});
each( function (author) {
alert(author.name);
});
用ActiveJax.model.find....的方法直接调用服务器端的model的find方法,注意,这里使用的是prototype js库的语法。对于服务器端的对象,你还可以声明排除某些字段属性,避免一些信息的泄漏:
class
Author
<
ActiveRecord::Base
active_jax :include => :publisher, :excluded_columns => :email
belongs_to :publisher
def find_by_name(n)
find(:all, :conditions => {:name => n})
end
end
active_jax :include => :publisher, :excluded_columns => :email
belongs_to :publisher
def find_by_name(n)
find(:all, :conditions => {:name => n})
end
end
如上所示,排除了email字段。