Обновлен до Rails 4.0, выдает ошибку: нет неявного преобразования символа в целое число

#ruby-on-rails #ruby #ruby-on-rails-4 #rubygems

#ruby-on-rails #ruby #ruby-on-rails-4 #rubygems

Вопрос:

Обновил gems (Rails 4.0 с Rails 3.2), и теперь я столкнулся с ошибкой. Это строка, вызывающая проблему.

 options[:autocomplete] ||= 'off'
 

параметры [:автозаполнение], в частности, выдают ошибку, когда я использую binding.pry.
Похоже, что строка a передается как «параметры», но этот код также используется для хэшей. Код работал нормально до того, как я обновился до Rails 4.0 и обновил ряд драгоценных камней и устаревший код.

Другая связанная с этим ошибка — на 2 строки ниже:

 label(name, options.delete(:label), :class => 'control-label')
 

что выдает ошибку: неправильное количество аргументов (3 для 1 ..2).
Обе ошибки из ActionView::Template::Error .

Вот полный метод:

 def #{selector}(name, options = {})
        options[:autocomplete] ||= 'off' #options = String ('Property')
        @template.content_tag(:div,
            label(name, options.fetch(:label, {}), :class => 'control-label')            
            @template.content_tag(:div,
            super(name, options_with_errors(name, options)),
          :class => 'controls'),
        :class => class_with_errors(name, 'control-group'))
      end
 

Я изменил параметры.удалить в разделе параметры.выборка, как предложено в ответе кем-то на сайте.

Я также пытался комментировать части для тестирования и изменять их части, но это либо выдает больше ошибок, либо удаляет большие части формы веб-страницы. Например, когда я удаляю один из аргументов в ‘label()’, я получаю сообщение об ошибке: уровень стека слишком глубокий.

И вот мой список драгоценных камней:

  $ bundle list
Gems included by the bundle:
  * actionmailer (4.0.0)
  * actionpack (4.0.0)
  * activemodel (4.0.0)
  * activerecord (4.0.0)
  * activerecord-deprecated_finders (1.0.4)
  * activesupport (4.0.0)
  * addressable (2.3.6)
  * annotate (2.6.3)
  * arel (4.0.2)
  * authlogic (3.4.1)
  * autoparse (0.3.3)
  * awesome_print (1.2.0)
  * aws-eventstream (1.0.2)
  * aws-partitions (1.149.0)
  * aws-sdk (1.38.0)
  * aws-sdk-core (3.48.3)
  * aws-sdk-kms (1.16.0)
  * aws-sdk-s3 (1.36.0)
  * aws-sigv4 (1.1.0)
  * bcrypt (3.1.7)
  * bcrypt-ruby (3.1.5)
  * builder (3.1.4)
  * bundler (1.17.3)
  * capybara (2.2.1)
  * celluloid (0.15.2)
  * celluloid-io (0.15.0)
  * ckeditor (4.0.6 f0d175a)
  * climate_control (0.0.3)
  * cocaine (0.5.4)
  * coderay (1.1.0)
  * coffee-rails (4.2.2)
  * coffee-script (2.4.1)
  * coffee-script-source (1.12.2)
  * concurrent-ruby (1.1.5)
  * daemons (1.1.9)
  * dalli (2.7.0)
  * database_cleaner (1.2.0)
  * delayed_job (4.0.1)
  * delayed_job_active_record (4.0.1)
  * diff-lcs (1.2.5)
  * dotenv (0.7.0)
  * erubis (2.7.0)
  * eventmachine (1.0.3)
  * exception_notification (4.0.1)
  * execjs (2.7.0)
  * extlib (0.9.16)
  * factory_girl (4.4.0)
  * factory_girl_rails (4.4.1)
  * faraday (0.9.0)
  * ffi (1.9.0)
  * ffi-compiler (0.1.3)
  * font_assets (0.1.11)
  * foreigner (1.6.1)
  * foreman (0.64.0)
  * formatador (0.2.4)
  * google-api-client (0.7.1)
  * grocer (0.5.0)
  * guard (2.6.0)
  * guard-rspec (4.2.8)
  * haml (4.0.5)
  * haml-rails (0.4)
  * heroku-rglpk (0.2.1 760859c)
  * hike (1.2.3)
  * i18n (0.9.5)
  * jmespath (1.4.0)
  * jquery-rails (3.1.0)
  * jquery-ui-rails (4.2.1)
  * json (1.8.6)
  * jwt (0.1.11)
  * launchy (2.4.2)
  * listen (2.7.1)
  * lumberjack (1.0.5)
  * mail (2.5.5)
  * memcachier (0.0.2)
  * method_source (0.8.2)
  * mime-types (1.25.1)
  * mini_portile (0.5.3)
  * minitest (4.7.5)
  * multi_json (1.13.1)
  * multipart-post (2.0.0)
  * newrelic_rpm (3.7.3.204)
  * nio4r (1.2.1)
  * nokogiri (1.6.1)
  * oauth (0.5.3)
  * orm_adapter (0.5.0)
  * paperclip (3.5.4)
  * pg (0.17.1)
  * pg_array_parser (0.0.9)
  * polyglot (0.3.5)
  * postgres_ext (3.0.1)
  * protected_attributes (1.0.3)
  * pry (0.9.12.6)
  * quiet_assets (1.0.2)
  * rack (1.5.5)
  * rack-cors (0.2.9)
  * rack-test (0.6.3)
  * rails (4.0.0)
  * rails_12factor (0.0.2)
  * rails_serve_static_assets (0.0.2)
  * rails_stdout_logging (0.0.3)
  * railties (4.0.0)
  * rake (12.3.2)
  * rb-fsevent (0.9.4)
  * rb-inotify (0.9.3)
  * request_store (1.0.5)
  * retriable (1.4.1)
  * rspec (2.14.1)
  * rspec-core (2.14.8)
  * rspec-expectations (2.14.5)
  * rspec-mocks (2.14.6)
  * rspec-rails (2.14.2)
  * rubyzip (1.1.7)
  * sass (3.4.25)
  * sass-rails (5.0.7)
  * scrypt (1.2.1)
  * shortener (0.3.0)
  * signet (0.5.0)
  * slop (3.5.0)
  * spork (0.9.2)
  * sprockets (2.12.5)
  * sprockets-rails (2.0.1)
  * strip_attributes (1.5.1)
  * thin (1.6.2)
  * thor (0.20.3)
  * thread_safe (0.3.6)
  * tilt (1.4.1)
  * timers (1.1.0)
  * treetop (1.4.15)
  * trim_blobs (0.0.1)
  * twilio-ruby (3.11.5)
  * tzinfo (0.3.55)
  * uglifier (2.5.0)
  * uuidtools (2.1.4)
  * xeroizer (2.16.5)
  * xpath (2.0.0)
  * yui-compressor (0.12.0)
 

Это то, что я получаю, когда использую pry:

 [1] pry(#<BootstrapFormBuilder>)> options
=> {:class=>"span12"}
[2] pry(#<BootstrapFormBuilder>)> options[:autocomplete]
=> nil
[3] pry(#<BootstrapFormBuilder>)> options[:autocomplete] ||= 'off'
=> "off"
[4] pry(#<BootstrapFormBuilder>)> options.class
=> Hash
[5] pry(#<BootstrapFormBuilder>)> :autocomplete
=> :autocomplete
[6] pry(#<BootstrapFormBuilder>)> :autocomplete.class
=> Symbol
[7] pry(#<BootstrapFormBuilder>)> autocomplete
NameError: undefined local variable or method `autocomplete' for #<BootstrapFormBuilder:0x007ffe1030c878>
from (pry):7:in `text_field'
[8] pry(#<BootstrapFormBuilder>)> options[:autocomplete].clas
NoMethodError: undefined method `clas' for "off":String
from (pry):8:in `text_field'
[9] pry(#<BootstrapFormBuilder>)> options[:autocomplete].class
=> String
 

Комментарии:

1. Не могли бы вы проверить puts options[:autocomplete] , что он возвращает

2. @sk1712 Я добавил его в сообщение.