jQuery getScript函数在Rails中找不到我的.js.erb模板

时间:2011-10-23 03:15:13

标签: javascript jquery ajax ruby-on-rails-3 ruby-on-rails-3.1

$(function() {
  $("#ll_search").submit(function() {
    $.getScript(document.location.pathname + '/index.js.erb');
    return false;
  });
});

代码段中的第3行会导致以下错误:

ActionController::RoutingError (No route matches [GET] "/labs/index.js.erb").

我正在运行Rails 3.1,这意味着jQuery是默认的。我三重检查了文件“index.js.erb”实际存在。 jQuery似乎无法看到它。

2 个答案:

答案 0 :(得分:0)

您可能不希望原始ERB版本(客户端上的任何内容都不知道如何处理它)并且脚本可能在Rails 3.1中的/assets中,因此请尝试以下方法之一:

$.getScript('/labs/index.js');
$.getScript('/assets/labs/index.js');
$.getScript('/assets/index.js');

我猜错了一些事情。

答案 1 :(得分:0)

请记住,document.location.pathname将为您提供根级别路径,这将在Rails中(默认情况下)将您带到公共目录(除非存在相应的路由)。如果您需要在请求时呈现此js文件(不建议在性能方面),请创建一个呈现js的端点,并使用正确的MIME类型适当地返回它。