Я хотел бы понять ответ format
действий в Rails. Предположим, у меня есть link_to
в моем фрагменте, который отображается на странице show
, как показано ниже:
show. html .erb
<%= render partial: 'my_partial', locals: { stage: @stage } %>
my_partial. html .erb
<% case 'stage' %>
<% when 'beginning' %>
<%= link_to 'Submit', { controller: 'my_controller', action: 'update_model' } %>
<% when 'ongoing' %>
<%= render partial: 'another_partial' %>
<% end %>
my_controller.rb
def update_model
#do something
respond_to do |format|
format.json { render json: { some_key: some_value } }
format.js { render partial: 'path_to_partial/partial.js' }
format.html { redirect_to action: 'show' }
end
end
Здесь при загрузке страницы show
для первой время @stage
будет beginning
, а затем при нажатии link_to 'Submit'
затем перед ответом от контроллера значение @stage
будет изменено на ongoing
.
Теперь. Когда я нажимаю link_to
, страница перезагружается, и response
находится в html
, поэтому format.html
отправляется. Если я добавлю remote: true
, то ответ будет js
, и страница не перезагрузится, потому что это remote
.
Итак, точная функциональность, которую я хочу, это перерисовать страницу show
, а затем внутри my_partial
она должна go до when ongoing
, а затем визуализировать страницу another_partial
без перезагрузки. Это происходит в том же URL-адресе.
Я пытаюсь понять, почему страница перезагружается, когда это тот же URL-адрес? Так работает format.html
? Что я должен сделать, чтобы снова отобразить страницу show
, но без перезагрузки страницы?