rails通过AJAX渲染所有动作 - 有一个简单的方法吗?

时间:2011-07-18 15:57:44

标签: ruby-on-rails ajax ruby-on-rails-3

我想通过AJAX进行rails渲染操作。我读过有关respond_to和js.erb的文章。但我真的不想通过每个link_to并添加:remote => true

但我主要担心的是创建几乎相同的js.erb文件

是否有制作AJAXful网站的方式?也许像inherited_resources?

3 个答案:

答案 0 :(得分:2)

我设法通过使用jquery将我的所有链接转换为AJAX,而无需编辑单个链接。我在$(document).ready

中添加了以下内容
// Ajax navigation
$('a').live('click', function(e) { 
  e.preventDefault();
  link = $(this); 
  target = link.attr('target')
  $('#'+target).load(link.attr('href'), function() {});
});

我在快捷方式jquery插件https://github.com/map7/jquery.beeline

中大量使用它

答案 1 :(得分:0)

您可以将默认格式类型设置为JSON,然后将控制器操作称为ajax。这是一个告诉how to set up the default format type的问题。看来你必须为每个资源做这件事。我从来没有试过这个......我只是根据需要使用ajax而不是整个网站。

答案 2 :(得分:0)

:remote =>链接上的true位将数据远程属性添加到生成的HTML链接中。

然后是rails ujs驱动程序通过正确的选择器不引人注意地选择它并添加所需的头文件让Rails(ActionPack)理解这是一个AJAX请求。

一种解决方案可能是根据驱动程序设置所有链接为AJAX(不确定是否要这样做)通过Javascript或覆盖/扩展/创建另一个帮助方法,其中包含:remote =>真实的。

围绕这些界限:

def ajax_link_to(url, label)
    link_to label, url, :remote => true
end

随意展开以包含html选项等。

或者使用alias_method_chain(未经测试):

def link_to_with_ajax(title, args = {})
  link_to_without_ajax(title, args.merge(:remote => true))
end
alias_method_chain :link_to, :ajax