Rails 4语法错误:`$('不允许作为全局变量名称

时间:2019-07-17 16:12:09

标签: jquery ruby-on-rails

我对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 .

我在这里想念东西吗?

1 个答案:

答案 0 :(得分:0)

在Ruby中,全局变量使用美元符号编写。

$foo = 'global'

将是有效的全局变量。因此,当您尝试使用该jquery行时,它认为您正在尝试设置全局变量,因为.rb文件中的代码正在作为Ruby代码运行。因此,正如评论者所说,您需要移动该javascript代码,以便它在视图中运行,并因此被评估为javascript代码,而不是Ruby代码。