2012-04-22 2 views
0

Я использую камень Linkedin, чтобы вытащить информацию из профиля для RoR 3.Тир в имени свойства не получает NoMethodError

Все работает, кроме когда я получаю свойство с тире в имени.

<%=position.title %> отображается правильно, но <%= position.start-date %> возвращают NoMethodError в Users#show - undefined method start.

Я пробовал разные операции типа «startDate», «start_date», котировки вокруг «даты начала», но никто не работал.

Есть ли способ избежать тире/дефиса в названии свойства?

+0

Это была моя ошибка. У меня была более старая версия драгоценного камня. –

ответ

0

Выражение в ERB будет проанализировано как вычитание значения переменной даты из результата вызова метода start() объекта position. Дефисы недействительны в идентификаторах в Ruby.

Я не достаточно знаком с камнем LinkedIn, чтобы предложить решение, за исключением того, что, поскольку он основан на XML API, вы должны искать способ вручную извлекать данные из пары тегов. Большинство подобных драгоценных камней предлагают такой метод. Кроме того, это отличный пример использования IRB в качестве поискового инструмента: запуск сеанса IRB и просмотр того, что происходит, когда вы вызываете position.methods, после правильного создания переменной позиции, конечно. Я предполагаю, что вы увидите что-то в этом списке, который предлагает ответ.

0

Похоже, он возвращает Hashie :: Mash, который преобразует ключи, с несколькими дополнительными правилами: https://github.com/pengwynn/linkedin/blob/master/lib/linked_in/mash.rb

Вы сказали, что уже пробовали position.start_date правильно? Это должно сработать. Но если нет, попробовали ли вы position['start-date'] или position['start_date'], один из этих двух тоже должен работать, так как это Mash.