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

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -