#ruby-on-rails #render
#ruby-on-rails #рендеринг
Вопрос:
У меня есть приложение rails, в котором у меня есть часть представлений как частичные, и я пересчитал пару представлений как SPA. У меня проблема с одной функциональностью. В одном месте я выполнял частичный рендеринг без вызова контроллера следующим образом:
def create
school_service.update_preview
@user = get_user
@result = prepare_result
render 'school/result/show', locals: {
pupil: @user,
result: @result
}
end
Я вызывал этот метод с помощью формы. Теперь я вызываю это из JS с помощью AJAX. Возможно ли отобразить это представление таким же образом? Я бы не хотел переписывать ‘school / result / show’ в SPA. Спасибо за все ответы.
Комментарии:
1. Что такое SPA, если вы не возражаете, если я спрошу?
2. Вам не хватает a
partial:
.3. SPA — одностраничное приложение
4. @user2239655 вы просто хотите отобразить этот частичный рендеринг из своего ajax?
5. Я не знаю, возможно ли это. Мне нужно установить переменные pupil и result, и я могу сделать это только на стороне сервера.
Ответ №1:
В вашем вопросе говорится I was calling this method using form. Now I call this using AJAX. Is it possible to render that view in the same way?
Поскольку вы используете AJAX, я предполагаю, что у вас будет что-то удаленное: true в вашей форме что-то вроде:
<%= form_for(@user, remote: true) do |f| %>
# your fields
<% end %>
Это приведет вас к действию create в вашем контроллере, и вы можете иметь блок response_to в вашем контроллере для обработки вашего формата js
def create
@user = get_user
@result = prepare_result
respond_to do |format|
format.js {}
end
end
Это позволит вам иметь файл create.js.erb в ваших представлениях, где вы можете написать свой js для рендеринга вашего частичного
$(".your_parent_element_class").html("<%=j render partial: "school/result/show",locals:{pupil: @user, result: @result} %>")
Для получения более подробной информации проверьте working with javascript in rails