Сохранение вывода части в локальную переменную, затем отправка в виде json в ajax-запрос

#jquery #ruby-on-rails #json

#jquery — jquery — запрос #ruby-на-рельсах #json #jquery #ruby-on-rails

Вопрос:

У меня есть вызов ajax, и я хочу вернуть ответ в формате json.

Контроллеру нужно будет получить выходные данные части, плюс добавить некоторые другие свойства к объекту, а затем сериализовать в json.

Как я могу получить выходные данные части и сохранить их в этом объекте?

Я хочу что-то вроде:

 def my_action

   my_output.html = render :partial => 'test', ....
   my_output.some_prop1 = 234234

   my_output.to_json
end
  

Затем, на мой взгляд, я введу html в DOM и т.д.

Ответ №1:

Просто используйте render_to_string вместо render .

 def my_action
   output = {}
   output[:html] = render_to_string :partial => 'test', ....
   output[:some_prop1] = 234234
   render :json => output
end
  

Комментарии:

1. Нужно ли сначала придать my_output определенный тип? или просто my_output = «» достаточно объявления?

2. кстати, он говорит, что не может найти шаблон. это работало, когда я делал это без render_to_string

3. мой код: render_to_string :partial => ‘test’, :locals => { :obj1 => obj1}, :layout => false

4. Это может зависеть от вашей версии Rails, но я не думаю, что вам нужен to_json , если вы передаете его в :json =>

5. Я не уверен, почему он его не нашел. Возможно, вам следует передать :partial => 'controller/partial' ?