У меня есть приложение на Rails 5, в котором отображаются различные формы на основе параметров.Правильная форма показывается, когда представление впервые показывает
. Однако при возникновении ошибки всегда отображается один и тот же частичный элемент.
diary_controller
def edit
@view = params[:view]
end
def update
respond_to do |format|
if @diary.update(diary_params)
format.html { redirect_to @diary, notice: 'Diary was successfully updated.' }
format.json { render :show, status: :ok, location: @diary }
else
format.html { render :edit }
format.json { render json: @diary.errors, status: :unprocessable_entity }
end
end
end
edit.html.erb
<% if @view == 'close' %>
<%= render 'close_fields'%>
<% elsif @view == 'new'%>
<%= render 'new_fields' %>
<% else %>
<%= render 'all_fields' %>
<% end %>
В настоящее время всегда отображается частичное 'all_fields'
при возникновении ошибки.
Можно ли отобразить первоначально показанное частичное при сохранении данных, введенных пользователем в поля, вместе с сообщениями об ошибках (в настоящее время отображаются под текстовым полем, поскольку я использую simple_form)?
------------ ОБНОВЛЕНИЕ ------------
Когда я добавляю puts params[:view]
в :edit
, он возвращает close
в консоли.
Когда я добавляю puts params[:view]
в :update
, в консоли ничего не возвращается.Я также попытался поставить @view = "close"
в обновлении.Когда я сделал это, правильное представление было показано после ошибки.
Parameters: {"utf8"=>"✓", "authenticity_token"=>"f7JoOucLkUlOyt31NW9HaJIWyXKVSu7q91kspfZYjgdF3hJneRKapnCPtgJn+R5NOC5nDhNvkB8PzzHNs9aLkg==", "diary"=>{"last_date"=>"", "notes"=>"hi, hi!", "update_type"=>"close", "view"=>"close"}, "reason_list_select2"=>"going on vacation", "season_reason_list_select2"=>"", "temp_reason_list_select2"=>"", "area"=>[{"id"=>"4", "action"=>"Not Applicable"}], "commit"=>"Close Diary", "id"=>"27"}