Я сделаю все возможное, чтобы правильно сформулировать этот вопрос!
Я пытаюсь сделать три разные формы на одной странице. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я выполняю «рендеринг» панели инструментов / индекса », она падает, потому что в других формах отсутствуют другие переменные экземпляра (например, @check = nil)
Если я изменю его на «redirect_to dashboard_path», он будет работать нормально при отправке правильной информации или если проверки не пройдены, но он потеряет всю другую информацию в форме после перенаправления.
Как мне привести другие переменные вместе с рендером?
или моя реализация не соответствует передовой практике? Есть ли лучший способ структурировать это?
Или я просто не задаю правильные вопросы?
Это не совсем тот же код, я пытался удалить весь несвязанный контент
в dashboard_controller.rb
def index
@calibration = Calibration.new
@blank = Blank.new
@check = Check.new
@last_calibration = Calibration.where(user_id: current_user.id).order(created_at: :asc).last
@last_blank = Blank.where(user_id: current_user.id).order(created_at: :asc).last
@last_check = Check.where(user_id: current_user.id).order(created_at: :asc).last
end
в index.html.erb
<% if @last_calbration&.complete? %>
<%= render 'calibrations/form' %>
<% end %>
<% if @last_blank&.complete? %>
<%= render 'blanks/form' %>
<% end %>
<% if @last_check&.complete? %>
<%= render 'checks/form' %>
<% end %>
в blanks_controller.rb (и других контроллерах)
def create
@blank = Blank.new(blank_params)
if @blank.save
redirect_to dashboard_path
else
render "dashboard/index"
end
end
в _blanks_form.html.erb (и других формах)
<%= form_for(@blank) do |f| %>
...
<% end %>