Подтвердить что ты не робот

Взлом RJS-поведения в Rails 5

У меня есть старый проект rails 2.x, который я преобразовал в основном в рельсы 5.

Одна из проблем заключается в том, что некоторые из моих действий использовались RJS, поэтому она выглядела так:

if request.xhr?
  render :action => 'new_user' and return
end

new_user.js.rjs выглядит примерно так:

page.call "User.create", render(:partial => 'new_user'), {:userId => @user.id}

Глядя на ответ в chrome, я вижу, что он просто возвращается:

User.create('<tr><td>....</td></tr>', {"userId" : 123});

Мне нужно только поддерживать вызов типа page.call типа RJS, что было бы легким "взломом", чтобы заставить это работать в рельсах 5?

Я не хочу изменять весь свой код javascript, мне просто нужно в основном иметь блок javascript, который я передаю JS-код на мои страницы просмотра правильно?

4b9b3361

Ответ 1

Я вернул ответ JSON на мои страницы просмотра, например:

some_partial_html = render_to_string(:partial => 'something')

response = {
  "html": some_partial_html,
  "a" : 1
}.to_json
render json: response

И затем, на мой взгляд, я использовал значения ответа json в качестве аргументов для объекта javascript, который выполняет необходимые мне функции.

Ответ 2

Попробуйте представить ответ как строку:

if request.xhr?
  render render_to_string partial: 'new_user',
    locals: { userId: @user.id },
    layout: false
end

Или попробуйте вместо этого использовать обработчик формата:

respond_to do |format|
   format.rjs do
     render render_to_string partial: 'new_user',
       locals: { userId: @user.id },
       layout: false
   end
end