Displaying errors in Ruby on Rails -
i have trouble displaying errors in rails. here controller
def new if current_user @edible = edible.new else flash[:notice] = "you need signed in action" redirect_to root_path end end def create @edible = edible.new(params[:edible]) if @edible.valid? && current_user.edibles.push(@edible) if(params[:edible][:pickup] == "1") respond_to |format| format.html { redirect_to new_user_edible_pick_up_adress(current_user.id, @edible.id) } end else respond_to |format| format.html { redirect_to(user_edible_path(current_user.id, @edible.id), :success => "product saved") } end end else respond_to |format| format.html { redirect_to(new_user_edible_path(current_user.id, :alert => "error happend" )) } end end end
form:
<%= nested_form_for @edible, :url => user_edibles_path, :html => { :multipart => true, :class => "signin" } |f| %> <%= render 'shared/alerts', :object => @edible %> #standart code further...
and partial:
<% if flash[:notice] %> <p class="notice"><%= flash[:notice] %></p> <% end %> <% if flash[:error] %> <p class="error"> <% if object %> <%= flash[:error] %> <ul> <% object.errors.full_messages.each |msg| %> <li> <%= msg %> </li> <% end %> </ul> <% end %> </p> <% end %> <% if flash[:alert] %> <p class="alert"><%= flash[:alert] %></p> <% end %>
i assume @edible variable not passed when redirecting new page, rails run object.errors on new instance every time. missing obvious thing?
i assume @edible variable not passed when redirecting new page
correct. expected since http stateless protocol.
the trick showing errors on form render while have object errors. means if model fails validations in create action should render instead of redirect.
def create @edible = edible.new(params[:edible]) if @edible.valid? && current_user.edibles.push(@edible) # no changes here else respond_to |format| format.html { render :new } # instead of redirecting render form end end end
Comments
Post a Comment