11155
(-- --)
November 3, 2014, 1:57am
1
Hi,
When I try to update a field using the update button I am getting the
error: No route matches [PATCH] "/profile". Its obviously missing the
/:id but I can't figure out why...
I am using a form_for in an edit view.
<%= form_for @profile , :html => { :class => 'form-horizontal '} do |f|
%>
...
<%= f.submit 'Update', :class => 'btn btn-primary' %>
...
<% end %>
@profile contains #<Profile:0x00000104c26398> as it should.
routes contains: resources :profiles and the resulting routes appear OK
Do I have to somehow configure the form_for to pass the :id to the
route?
Thanks
Dave Castellano, MD
Hey Dave,
I think may be error in your controller, can you once again check profiles controller edit action
Form_for will get the :id by default. which version are you using and please paste the controller code here. tks
11155
(-- --)
November 3, 2014, 12:17pm
4
sampath n. wrote in post #1161624:
Form_for will get the :id by default. which version are you using and
please paste the controller code here. tks
On Mon, Nov 3, 2014 at 10:16 AM, BalaRaju Vankala
<foreverbala4u@gmail.com>
Rails 4.0.3
Controller code:
def edit
@banner_title = "Edit Profile"
@profile = Profile.find(current_user.id)
end
def update
@profile = Profile.find(current_user.id)
respond_to do |format|
if @profile.update_attributes (params[:profile])
format.html { redirect_to user_url, notice: 'Profile was
successfully updated.' }
format.json { head :ok }
else
@title = "Edit profile"
format.html { render action: "edit" }
format.json { render json: @subject.errors , status:
:unprocessable_entity }
end
end
end
Matt_Jones
(Matt Jones)
November 3, 2014, 1:05pm
5
From the route it’s generating, I suspect you have a resource :profile
someplace above this. That matches the controller actions you’re showing, which use current_user.id
instead of params[:id]
. You’ll likely need to specify the URL explicitly to form_for
.
–Matt Jones
11155
(-- --)
November 3, 2014, 1:49pm
6
Matt Jones wrote in post #1161637:
Hey Dave,
Before any controller action use "raise params.inspect ", you will get parameters coming from Form. You have to use that parameters only .
In your case just add this line in edit action (Edit Method) “raise params.inspect”. you will get all parameters.