Redirect issue after update

Aside from the fact that the ‘edit’ method in the following
product_admin_controller is using request.post? instead of creating a
separate ‘update’ method, are there any issues with the code that is
immediately apparent and I am overlooking?

def edit
@product = Product.find(params[:id])
if request.post?
if @product.update_attributes(params[:product])
flash[:notice] = “Success.”
redirect_to :action => ‘list’
unless @product.styles_valid?
flash[:notice] = “Error.”
else
flash[:notice] = “Success.”
end
else
flash[:notice] = “Error.”
flash[:error_field] = :product
end
end
end

I have tried to insert a raise after request.post? but my application
doesn’t make contact with this.

Of course, I’ve ensured my form method is set to “post”.

Now what is the exact problem here.

Fine. Can you check the log, copy & paste the params that you get for
the action. Also paste the log till redirect occurs.

Srikanth J. wrote in post #957743:

Now what is the exact problem here.

My apologies, I seem to have omitted the point of my post o.O

The problem is that the changes are not being saved and it (seemingly)
redirects to the site index.

I have tried to insert a raise after request.post? but my application
doesn’t make contact with this.

Of course, I’ve ensured my form method is set to “post”.

Hi,
Why you want to post your form on same(i.e edit) method…??
As in rails already has CRUD good feature. So y need to custom your form
submit flow.?

Anyway… I would give following solution for you case

1- check that routes.rb file
if u have

map.resources :product_admin

then replace those routes using

map.with_options :controller => :product_admin do |pp|
pp.edit ‘product_admin/edit/:id’, :action => :edit

…ur all methods routes should be here

end

2 - check you edit.html.erb file

add :url => {:action => :edit} in you form tag

One main thing in your controller prefer params[:product_admin] or
whatever ur form array instead of request.post?

like

if params[:product_admin]

end

I hope this will help you!!

Good Luck :wink:

-Ganesh K

Srikanth J. wrote in post #957747:

Fine. Can you check the log, copy & paste the params that you get for
the action. Also paste the log till redirect occurs.

Processing ProductAdminController#edit (for —.---.-.-- at 2010-10-28
11:41:01) [POST]
Parameters: {“commit”=>“Update”,
“authenticity_token”=>“W/qBr+JI++GoShT78LvYEl66Cquoq0l4LfdC/mk11Ns=”,
“id”=>“145”, “product”=>{“permalink”=>“multistar-footed-playsuit”, “pict
ure1_id”=>“1093”, “price”=>“18”, “name”=>“Multistar Footed Playsuit”,
“picture6_image_alt”=>"", “vat_exempt”=>“1”, “picture5_image_alt”=>"",
“fairtrade”=>“1”, “organic”=>“1”, “m
eta_description”=>“something”, “picture4_image_alt”=>"",
“picture2_image_alt”=>"", “display”=>“0”, “picture3_image_alt”=>"",
“picture1_image_alt”=>"", “category_ids”=>[“26”, “61
“, “62”, “5”, “28”, “39”, “60”], “meta_tags”=>””,
“summary”=>"

Something…

\r\n
  • Available
    in sizes: 0-3, 3-16, 6-12 months
  • \r\n
  • Made from GOTS certified
    organic cotton
  • \r\n
  • The Fairtrade Mark is your guarantee that
    small scale cotton farmers are getting a better deal
  • \r\n
  • Pesticide and chemical free
  • \r\n
  • Screen printed by hand using low impact environmentally friendly dyes
  • \r\n
  • We only use nickle free poppers\r\n

    \r\n
  • ", "picture1_remove"=>"0", "product_code"=>"OC-145", "sale_price"=>"", "wholesale_price"=>"9"}}

    It then redirects to the index page.

    Ganesh Kathare wrote in post #957752:

    Hi,
    Why you want to post your form on same (i.e edit) method?
    As in rails already has CRUD good feature. So y need to custom your form
    submit flow?

    I asked myself the very same question; it was not me that built the
    site. I can assure you that if it were me, it would follow the CRUD
    framework.

    Anyway… I would give following solution for you case

    1- check that routes.rb file
    if u have

    map.resources :product_admin

    then replace those routes using

    map.with_options :controller => :product_admin do |pp|
    pp.edit ‘product_admin/edit/:id’, :action => :edit

    …ur all methods routes should be here

    end

    2 - check you edit.html.erb file

    add :url => {:action => :edit} in you form tag

    One main thing in your controller prefer params[:product_admin] or
    whatever ur form array instead of request.post?

    like

    if params[:product_admin]

    end

    I hope this will help you!!

    Good luck :wink:

    • Ganesh K

    Thank you for your response.