У меня есть форма, которая создает два объекта и сохраняет их в базе данных.
Я хочу сделать следующие вещи :
- сохранение данных в базе данных (объекты стенда)
- проверить поля (у меня есть проверка в модели)
- и если проверка не пройдена, я хочу заполнить поля введенными данными
- изменить действие для этой формы
Проблемы
- Если я использую @report, я получаю:
Вызывается идентификатор для ноль, который будет
ошибочно быть 4 ошибка
(не могу найти объект). Я имею в контроллере, в действии сотворения @report = ReportMain.new и в действии, которые визуализируют это представление.
- Когда я использую: report_main (название модели), он работает, он сохраняет данные в базу данных, но я не могу заполнить поля, когда проверка не пройдена.
Вопросы:
- Что делать с этими двумя моделями, чтобы заставить это работать (проверка, заполнение полей, редактирование)?
- Можете ли вы дать мне несколько советов, если подход неправильный?
Мой взгляд выглядит так:
<%= form_for(@report, :url => {:action => 'encreate'}) do |f| %>
<%= render "shared/error_messages", :target => @report %>
<%= f.text_field(:amount) %>
<% fields_for @reporte do |r| %>
<%= r.check_box(:q_pripadnost) %>Pripadnost Q listi
<%= select_tag('nacinpakovanja',options_for_select([['Drveno bure', 'Drveno bure'], ['Kanister', 'Kanister'], ['Sanduk', 'Sanduk'], ['Kese', 'Kese'], ['Posude pod pritiskom', 'Posude pod pritiskom'], ['Kompozitno pakovanje', 'Kompozitno pakovanje'], ['Rasuto', 'Rasuto'], ['Ostalo', 'Ostalo']])) %>
<%= r.text_field(:ispitivanjebroj) %>
<%= r.text_field(:datumispitivanja) %>
<% end %>
<input id="datenow" name="datenow" size="30" type="text" value="<%= @date %>">
<div class="form-buttons">
<%= submit_tag("Unesi izvestaj") %>
</div>
<% end%>
создавать актин в ReportController:
def encreate
@report = ReportMain.new
@reporte = ReportE.new
@reportparam = params[:report_main]
@report.waste_id = params[:waste][:code]
@report.warehouse_id = Warehouse.find_by_user_id(current_user.id).id
@report.user_id = current_user.id
@report.company_id = current_user.company_id
@report.amount = @reportparam[:amount]
@report.isimport = false
@report.isfinished = false
@report.reportnumber = ReportMain.where(:company_id => current_user.company_id, :isimport => false).count.to_i+1
if @report.save
@reporte.report_main_id = @report.id
else
redirect_to(:action => 'exportnew')
return
end
@reporte.vrstaotpada = params[:vrstaotpada]
@reporte.nacinpakovanja = params[:nacinpakovanja]
@reporte.ispitivanjebroj = @reportparam[:ispitivanjebroj]
@reporte.datumispitivanja = @reportparam[:datumispitivanja]
@reporte.q_pripadnost = @reportparam[:q_pripadnost]
@reporte.datumpredaje = @date
if @reporte.save
redirect_to(:action => 'show', :id => @reporte.id)
else
redirect_to(:action => 'exportnew')
end
end