0

我是 Rails 和 Javascript 的菜鸟。在遵循 Ryan Bates 的 Railscasts 196197(嵌套模型表单)时,我制作了一个具有嵌套属性的应用程序。

在我使用复选框删除字段之前,一切正常。但是当我在我的 _question_fields.html.erb 中使用它时:

<%= link_to_function 'remove', 'remove_fields(this)' %>

和 /assets/javascripts/application.js 中的这个 javascript 函数:

function remove_fields(link) {
  $(link).previous("input[type=hidden]").value = "1";
  $(link).up(".fields").hide();
}

没发生什么事。我已确保将<%= javascript_include_tag "application" %>其包含在views/layouts/application.html.erb

当我单击删除链接时,Firefox (Firebug) 和 Chrome (Built-in) 上的 Javascript 控制台会引发此错误。

Uncaught ReferenceError: $ is not defined 

我错过了一些非常基本的东西吗?任何帮助,将不胜感激。我正在使用 Ruby 1.9.3、Rails 3.2.3 和 Mongoid 3.1.2。

4

1 回答 1

0

好的,解决方案(如bfavaretto所指出的)很简单。我们需要使用prototypegem 并将它的引用添加到application.js.

1)在你的Gemfile,添加:

gem 'prototype-rails'
# You might want to comment out #gem 'jquery-rails'

2) 在application.js中,最重要的是,添加:

//= require prototype
//= require prototype_ujs
//= require effects
//= require dragdrop
//= require controls

3)确保这一行被删除/评论config/enviroments/development.rb

#config.action_view.debug_rjs = true

4) 运行 Bundler 并重启 Rails Server

$ bundle install
$ rails s         # This is important!
于 2013-04-04T13:09:48.170 回答