Hi I have in routes.rb like map.resources :users Now I am trying to edit a user. What the url shows now is http://localhost:3000/users/1/edit But my problem is , when I click on update button and if validations fail I am re rendering the edit page. And it happens properly. But the url becomes http://localhost:3000/users/1 I can''t figure it out . Please give a solution. Why this happens? So if a user goes to url and press enter it will show Unknown action No action responded to show. Actions: create, edit, new, and update My controller code for update is def update @user = User.find(params[:id]) respond_to do |format| if @user.update_attributes(params[:user]) flash[:notice] = ''User was successfully updated.'' format.html { redirect_to home_url } format.xml { head :ok } else flash.now[:error] = @user.errors.full_messages.join("<br />") format.html { render :action => "edit" } format.xml { render :xml => @user.errors, :status => :unprocessable_entity } end end end Thanks in advance Tom -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Your error case rendered the edit template... pretty standard. The path was called on a POST (the update). There is no corresponding GET version of that path. So when you try to go there in the browser you get an error. On Mar 17, 10:34 pm, Tom Mac <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Hi > I have in routes.rb like > map.resources :users > > Now I am trying to edit a user. What the url shows now ishttp://localhost:3000/users/1/edit > But my problem is , when I click on update button and if > validations fail I am re rendering the edit page. And it happens > properly. But the url becomes > > http://localhost:3000/users/1 > > I can''t figure it out . Please give a solution. Why this > happens? So if a user goes to url and press enter it will show > > Unknown action > > No action responded to show. Actions: create, edit, new, and update > > My controller code for update is > > def update > @user = User.find(params[:id]) > respond_to do |format| > if @user.update_attributes(params[:user]) > flash[:notice] = ''User was successfully updated.'' > format.html { redirect_to home_url } > format.xml { head :ok } > else > flash.now[:error] = @user.errors.full_messages.join("<br />") > format.html { render :action => "edit" } > format.xml { render :xml => @user.errors, :status => > :unprocessable_entity } > end > end > end > > Thanks in advance > Tom > -- > Posted viahttp://www.ruby-forum.com/.-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hi I get error when I enter http://localhost:3000/users/1 from url But if it is http://localhost:3000/users/1/edit No problem. So my question is why in the else case it shows in the url http://localhost:3000/users/1 instead of http://localhost:3000/users/1/edit Tom -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
When you are click on submit to update the data, /users/1 url is called .. Now if your data is valid and saved properly then it will redirect to another page... If your data is not valid or not saved properly then it will render to edit page.. When you render to any page , it will only call view page and url remains same, benefit of render the page is that object contain the current data as well as the errors (if any which are use to show on page). Thanks Brijesh Shah -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Hi Tom, It is happening so because, when u clicked update, the browser had sent post request to the new url which is http://localhost:3000/users/1 which is nothing but update action in ur controller. In ur update action you are rendering the edit action if the validation failed. Which means that url on browser doesn''t change but the page being viewed is still edit page. So when user clicks on the url and press enter, it sends get request (not post request) to http://localhost:3000/users/1, which actually invokes show action in your controller. The browser behavior is actually normal and correct. If the user clicks on the url and press enter, it should be assume that user wants to see the data not edit. So you actually need to define show action or redirect the user back to edit page when validation fails (but redirecting will not carry your validation error messages, so you may have to put some additional efforts to carry those validation error messages). On Mar 18, 10:34 am, Tom Mac <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Hi > I have in routes.rb like > map.resources :users > > Now I am trying to edit a user. What the url shows now ishttp://localhost:3000/users/1/edit > But my problem is , when I click on update button and if > validations fail I am re rendering the edit page. And it happens > properly. But the url becomes > > http://localhost:3000/users/1 > > I can''t figure it out . Please give a solution. Why this > happens? So if a user goes to url and press enter it will show > > Unknown action > > No action responded to show. Actions: create, edit, new, and update > > My controller code for update is > > def update > @user = User.find(params[:id]) > respond_to do |format| > if @user.update_attributes(params[:user]) > flash[:notice] = ''User was successfully updated.'' > format.html { redirect_to home_url } > format.xml { head :ok } > else > flash.now[:error] = @user.errors.full_messages.join("<br />") > format.html { render :action => "edit" } > format.xml { render :xml => @user.errors, :status => > :unprocessable_entity } > end > end > end > > Thanks in advance > Tom > -- > Posted viahttp://www.ruby-forum.com/.-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.