В приложении у меня есть следующее:
def new
@property = Property.new(:country_id => 1, :user_id => current_user.id, :status_id => 'draft')
end
def create
@property = Property.new(params[:property])
if @property.save
flash[:success] = t('The_property_is_successfully_created')
redirect_to myimmonatie_url
else
flash.now[:error]=t("The_property_could_not_be_created")
render :action => 'new'
end
end
Когда появляется ошибка, выполняется строка render: action => 'new', но форма my выдает ошибку:
бланк пользователя
пустой бланк
Они не могут быть пустыми (определены в модели), что означает следующий код:
@property = Property.new(:country_id => 1, :user_id => current_user.id, :status_id => 'draft')
больше не выполняется. В чем причина и решение?
UPDATE:
Представление очень длинное, но соответствующие строки таковы:
<% form_for :property, @property, :url => { :action => "create" } do |f| %>
<%= f.error_messages( :header_message => nil, :message => nil) %>
<!--lot's of fields -->
<%- end -%>
Приложение не падает, это сообщения об ошибках, которые показывают поля, которые не могут быть пустыми.
Первые 2 ответа уже дали мне причину ошибки: рендер new не выполняет новый метод, поэтому логично, что параметры пусты. Теперь необходимо убедиться, что представление также отображает параметры, которые также установлены в новом методе. Как этого добиться?
Спасибо!