Hi,
In an app I have the following:
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
When an error accors, the line render :action => 'new' gets executed, but the my form gives an error: user blank country blank These cannot be blank (defined in model), meaning this code:
@property = Property.new(:country_id => 1, :user_id => current_user.id, :status_id => 'draft')
is not executed anymore. What is the reason and solution?
UPDATE: The view is very long, but the relevant lines are these:
<% form_for :property, @property, :url => { :action => "create" } do |f| %>
<%= f.error_messages( :header_message => nil, :message => nil) %>
<!--lot's of fields -->
<%- end -%>
The app does not crash, it is the error_messages that show the fields that cannot be blank. The first 2 answers already gave me the reason for the error: the render new does not execute the new method, so it is logical that the paramters are empty. The goal is now to make sure that the view also reveices the parameters that are also set in the new method. How to achieve that?
Thanks!