关于'application.js'文件的一些问题

时间:2011-09-08 18:05:07

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

我正在使用Ruby on Rails 3.0.10和jQuery 1.6。我打算在我的应用程序的application.js文件中编写一些JavaScript函数,以便我可以接近Unobtrusive JavaScript。但是,我有一些问题(那些引用application.js文件):

  • 我应该如何陈述JS功能?
  • 我应该添加什么样的“功能”?
  • 我应该如何组织功能?
  • 这些函数如何与jQuery一起使用?

2 个答案:

答案 0 :(得分:3)

如果我在读你的问题的权利,你想知道你应该怎么写你的JS到的application.js文件,以使其适合的视觉非侵入式JavaScript 的。

这是一个例子。假设您有一个视图,页面上有一个链接,可以让您在Javascript对话框中输入答案:

# app/views/questions/ask.html.erb
<h1>Question</h1>
<a href="#" class="question">Click here to see the question!</a>

请注意,该链接设置为无处可去。如果用户没有安装Javascript,那么这将无效。现在,在您的application.js文件中,您通过类挂接到<a>标记(我假设您使用的是jQuery):

// public/javascripts/application.js
$('.question').click(function() {
  var name = prompt('What is your name?');
  alert('Hello ' + name + '!');
});

就是这样!这是“不引人注目的”,因为您在HTML中看不到一堆Javascript代码。现在,如果您想成为一名优秀的Javascript公民,您可以命名自定义代码并使其在整个应用程序中可重用。假设您有很多可以提问的页面。您可能想要重构问题的部分,然后简单地返回答案:

// public/javascripts/application.js
var CustomCode = {
  askQuestion:function(text) {
    return prompt(text);
  }
};

$('.question').click(function() {
  name = CustomCode.askQuestion('What is your name?');
  alert('Hello ' + name + '!');
});

这是一个非常简单的重构,因为它并没有真正提高效率,但是假设你想在将它返回给用户之前对答案做些什么。现在,您只需编写一次该代码(在askQuestion()方法中),每个人都可以获益。

您可以在此处查看代码并在其中播放:http://jsbin.com/arites

答案 1 :(得分:0)

“我应该如何陈述JS功能?” 编写JS函数而不包含在<script>标记中。

我应该添加什么样的“功能?” 这个文件很适合用于多次使用的代码,所以你不要重复,但任何代码都可以放在这里来清理你的视图。

“我应该如何组织职能?” 以您想要的任何方式组织JS功能 - 您可以对部分进行评论以保持井井有条:

/*
Home Page Functions
*/

“这些功能如何与jQuery一起使用?” Jquery函数的工作方式与在页眉中编写它们时通常的工作方式相同。 例如:

$(function(){
  alert('got to application.js!');
})

请注意,在rails 3.1中,事情会有所不同......观看railscast以加快速度:upgrading to 3.1