如何让我的application.js(jQuery)文件从我的Rails应用程序中的其他位置执行脚本?

时间:2010-09-13 21:06:11

标签: jquery ruby-on-rails

我开始感到疯狂,因为我想做的事情很简单:在我的Rails application.js文件中写一行javascript,这将导致应用程序中其他地方的脚本执行。我用jQuery.get()和jQuery.getScript()尝试过,但似乎没什么用。

以下是我的application.js文件中的一些示例代码:

#application.js
$(document).ready(function() {
  $(".button").click.function(){
    $.get($(this).attr("href"), null, null, "script");
  });
});

#application.js, excerpt
  $.getScript("index.js.erb", function(){
    alert('script has run');
  });

其他变种。我已经尝试将index.js.erb文件放在与当前页面相同的视图文件夹中,或者放在javascripts文件夹中,甚至尝试将其设置为纯.js文件。脚本本身不是问题,我正在尝试使用简单的行:

#app/views/index.js.erb)
$('.header').text('new text')

没有什么对我有用,请帮忙!

4 个答案:

答案 0 :(得分:1)

在“href”之前看起来你有一个额外的引用。

另外,您可以尝试在href之后添加.js扩展名: ... attr(“href”)+'。js',...

答案 1 :(得分:0)

以下是我要检查的内容:

  • 萤火虫中的任何错误?
  • 检查您的网页来源,是否包含jQuery?
  • 如果您只是在application.js中发送提醒,该怎么办?
  • 您确定自己拥有在$(document).ready(...)回调中发布的代码吗?

答案 2 :(得分:0)

需要加入:

$(function(){
 // your code goes here
});

答案 3 :(得分:0)

您的网络服务器将提供位于*.js目录中的任何public/个文件。它不会提供任何不在public/中的静态文件,即使它们位于*.erb,也不会提供任何public/个文件。此外,public/目录仅适用于静态文件,并且Web服务器不会通过Erubis运行位于*.js内的任何public/

相反,您需要为您的特殊ERB JavaScript文件提供单独的路径控制器/操作和路由,并且ERB JavaScript文件应位于app/views/