2

У меня есть два компьютера, которые я в основном использую для разработки моего приложения Rails. Во время работы с компьютером 1 я добавил некоторые элементы начальной загрузки для некоторых входов. Например:Ошибка синтаксиса Rails 4.2, неожиданный ':', expecting =>

= f.select :transport_from_state, options_for_select(state_populator, @invoice_ambulance.transport_from_state), { include_blank: true}, { class: 'chosen-select', 'data-placeholder': 'State' } 

Я добавил 'data-placeholder': 'State' и использовал «новый» синтаксис вместо старого :data-placeholder' => 'State', который прекрасно работает. Страница работает без ошибок на компьютере 1.

Я вытащил компьютер 2, и теперь я получаю сообщение об ошибке для каждого экземпляра 'data-placeholder'. Вот моя ошибка:

syntax error, unexpected ':', expecting => 
...en-select', 'data-placeholder': 'State' } 

Я могу заменить его на старый синтаксис, и он отлично работает. Однако мне не нужно было переводить 100 экземпляров этого в устаревший синтаксис. С тех пор я установил пакет, обновил пакет и не удалил db.

Компьютер 1 (работы)

рубин 2.2.0p0

Rails 4.2.0

Компьютер 2 (не работает)

рубин 2.2.0preview1

Rails 4.2. 0

ответ

2

Синтаксис «более новый» предназначен только для символов.

{hello: 'world'} эквивалентно {:hello => 'world'}, но если ваш ключ является строкой, то вам все равно придется использовать «хэш-ракетный» синтаксис: { «привет» => «мир»}

http://ruby-doc.org/core-2.2.0/Hash.html

+1

В Ruby 2.2 '{'s: ...}' действителен и даст вам ключ ': s'. Котируемым символам требуется значение hashrocket и lead-colon перед 2.2. –

+0

Я предположил, что моя установка ruby ​​2.1.5 по-прежнему актуальна. Спасибо @muistooshort – AndrewH

7

Вам нужно чтобы обновить компьютер 2 до реального Ruby 2.2.0, а не эту «предварительную» версию бета-версии. Используя цитируемые символы с синтаксисом двоеточия JavaScript-стиль:

{ 'some string': value } 

не действует до Рубине 2.2, версия 2.2.0preview1 у вас на компьютере 2, по-видимому, не поддерживает его.


BTW, нет старого и нового синтаксиса, существует альтернативный JavaScript-стиль обозначение, которые можно использовать, когда ключи в хэше-литерале некоторых символов. Тот, кто сказал вам, что хеш-хет устарел, в лучшем случае смущен.

Смежные вопросы