我对Rails还是很陌生,觉得我缺少什么。使用Rails 4.2.10尝试调用jQuery命令,但始终收到相同的错误:
irb(main):001:0> $(document).ready()
Traceback (most recent call last):
7: from bin/rails:4:in `<main>'
6: from bin/rails:4:in `require'
5: from /usr/lib/ruby/vendor_ruby/rails/commands.rb:17:in `<top (required)>'
4: from /usr/lib/ruby/vendor_ruby/rails/commands/commands_tasks.rb:39:in `run_command!'
3: from /usr/lib/ruby/vendor_ruby/rails/commands/commands_tasks.rb:68:in `console'
2: from /usr/lib/ruby/vendor_ruby/rails/commands/console.rb:9:in `start'
1: from /usr/lib/ruby/vendor_ruby/rails/commands/console.rb:110:in `start'
SyntaxError ((irb):1: `$(' is not allowed as a global variable name)
或具有相同错误的控制器内部...
class PagesController < ApplicationController
def home
$(document).ready();
@products = Product.all
end
...
我正在自己的Gem文件gem 'jquery-rails'
中使用此文件,请注意我已经运行过bundle install
然后,我的/app/assets/javascript/application.js
看起来像这样,
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require bootstrap-sprockets
//= require_tree .
我在这里想念东西吗?
答案 0 :(得分:0)
在Ruby中,全局变量使用美元符号编写。
$foo = 'global'
将是有效的全局变量。因此,当您尝试使用该jquery行时,它认为您正在尝试设置全局变量,因为.rb
文件中的代码正在作为Ruby代码运行。因此,正如评论者所说,您需要移动该javascript代码,以便它在视图中运行,并因此被评估为javascript代码,而不是Ruby代码。