AJAX GET JSON отправка данных на проблемы с контроллером - PullRequest
1 голос
/ 21 марта 2011

Я звоню

$.get('/profile', {'data_id': 0}, null, 'script');

в моем profile/index.html.haml, когда происходит конкретное событие. Предполагается, что для загрузки profile/index.js.erb при передаче данных JSON. В index действии контроллера моего профиля у меня есть

@dataid = params[:data_id]
if @dataid == 0
  #do something, ie set variables that index.js.erb needs
else
  #do something else
end

Однако оператор if, похоже, не работает, поэтому я считаю, что мой файл js.erb загружается неправильно (не загружается вообще).

Однако, если я сделаю if !dataid.nil? вместо == 0 (or some other value), он будет работать так же, как и до ввода оператора if / js.erb, поэтому он должен получить dataid какое-то значение ...

Также, если я не использую оператор if, а в моем js.erb я делаю dataid = <%= raw @dataid %>; alert(dataid);, все загружается нормально, и предупреждение корректно - dataid равно 0. Так почему это похоже на контроллер, который устанавливает raw @dataid, во-первых, не знает, каково значение @dataid? Я очень смущен ...

Основная цель состояла в том, чтобы не делать все в контроллере без необходимости (как указано data_id). Также, таким образом, я думал, что смогу сделать то же самое в моем js.erb - запускать только те разделы, которые мне нужны, основываясь на этом параметре.

1 Ответ

1 голос
/ 21 марта 2011

Все, что приходит через HTTP, поступит в виде строки.Если вы сравните с «0», он, скорее всего, будет равным.Попробуйте это в коде вашего контроллера:

Rails.logger.debug "All params are:\n#{params.inspect}"
Rails.logger.debug "I got params[:data_id] = '#{@dataid}'"
Rails.logger.debug "The type is: #{@dataid.class}"
Rails.logger.debug "Comparison yields: #{@dataid == 0}"

Затем посмотрите логи.Вы увидите, о чем я говорю.

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