To_json требует параметров? как насчет рельсов? - PullRequest
0 голосов
/ 14 мая 2010

Требуются ли для to_json параметры? как насчет рельсов?

Я начал получать сообщение об ошибке «неверное количество аргументов (0 для 1)» при выполнении myhash.to_json

К сожалению, я не уверен, когда эта ошибка начала происходить, но я предполагаю, что она относится к некоторым версиям rails или json gem. Я предполагаю, что мой код (в контроллере rails) использует версию to_json ActiveSupport :: JSON, а не метод to_josn, поддерживаемый гемом json. ActiveSupport :: JSON против JSON

В среде .rb у меня

RAILS_GEM_VERSION = '2.3.2'

, а также

config.gem "json", :version=> '1.1.7'

Это просто простая хеш-структура, содержащая примитивы, которые я хочу преобразовать в моем контроллере, и она работала , но теперь я не могу запустить to_json без передачи параметров.

Ответы [ 3 ]

0 голосов
/ 15 мая 2010

Если ActiveSupport в этой версии рельсов имеет to_json, , зачем использовать камень ? Gem, вероятно, переопределяет Object#to_json, чтобы требовать аргументы, и именно поэтому вы получаете ошибку.

Найдите код json Gem и найдите, где to_json определено, чтобы проверить это.

0 голосов
/ 17 мая 2010

to_json не требует параметров , когда вы используете версию, предоставленную в rails (ActiveSupport :: JSON), так что это сообщение об ошибке показывает, что он должен пытаться вызвать метод to_josn, определенный в json драгоценный камень.

Таким образом, мой настоящий источник путаницы был связан с тем, как рельсы загружают эти библиотеки.

Он загрузит гем json и будет использовать его в контроллере, даже если у меня нет строки с надписью 'require json' , потому что rails загружает драгоценные камни, как определено в environment.rb, так что фактически Мне нужно было удалить строку

config.gem "json", :version=> '1.1.7'

... из моего окружения. Мой код был сломан, так как я добавил это. Смущает, что мне нужен этот драгоценный камень, но только для сценариев, которые я делаю вне рельсов.

0 голосов
/ 14 мая 2010

У вас есть собственная версия to_json, определенная в модели, в которой не принимает аргументы? Если так, сделайте это, чтобы принять *args или opts = {}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...