рельсы 3 jquery button_to удаленного JSON не декодирования - PullRequest
0 голосов
/ 03 октября 2011

Я использую jQuery в проекте rails 3.1.Я использую button_to с: remote => true:

<%= button_to "View Examples", "#{requisition_assign_path(@req.id, category_row.id)}?show_examples=1", :remote => true, :method => 'get' %>

Это прекрасно подходит для сервера и обрабатывается здесь:

   def show
    @assignment = Assignment.find params[:id]
    @tag = @assignment.assignee
    examples = []
    @tag.example[@tag.tag].each do |e|
      examples << {:id => e.id}
    end
    @examples_json = examples.to_json
    respond_to do |format|
      format.js {render "assign/show.js.erb"}
    end
  end

Что вызывает show.js.erb просто отлично:

alert(jQuery.parseJSON("<%= @examples_json %>");

Но в браузере приходит текст, но я не могу его разобрать в исходном массиве хэшей.Чего мне не хватает?

---- то, чего я, возможно, упускаю, - это просто использование функции getJSON в jQuery ...

1 Ответ

1 голос
/ 29 ноября 2011

Не могли бы вы опубликовать журнал для этого действия?Одна проблема, с которой я столкнулся при использовании встроенных «удаленных» помощников, заключается в том, что они запрашивают контент в JS, а не в JSON.С вашим текущим кодом контроллера вы не получите никакого ответа от $ .getJSON (ваш контроллер настроен на ответ только на JS).Вы можете попытаться добавить блок response_to в верхней части контроллера

respond_to :html, :json

, и ваше действие может выглядеть следующим образом:

def show
  @assignment = Assignment.find(params[:id])
  @tag = assignment.assignee
  @examples = []
  @tag.example[@tag.tag].each do |e|
    @examples << {:id => e.id}
  end
  respond_with(@examples)
end

Что происходит, если вы запрашиваете содержимое JSON в Rails3 Ответчик по умолчанию автоматически преобразует @examples в JSON.Вы можете попробовать это с общей функцией jQuery AJAX

jQuery.ajax({
  url: $(this).attr('href'),
  type: 'GET',
  dataType: 'JSON',
  success: function(data){
    json = jQuery.parseJSON(data.responseText);
    console.log(json);
  }
});

С уважением!

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