Rails: Too Few Arguments
28,116
You forgot to write responds_to
block:
def update
@holder = Holder.find(params[:id])
if @holder.update_attributes(params[:holder])
respond_to do |format|
format.html { redirect_to holders_path } #, flash[:success] = "holder updated")
format.js
end
else
render 'edit'
end
end
But I am suspicious about your index.html.erb, I don't think that will really work the way you think.
Comments
-
Noah Clark almost 4 years
I am trying to get some Javascript working in my Rails app.
I want to have my index page allow me to edit individual items on the index page, and then reload the index page upon edit.
My index.html.erb page looks like:
<div id="index"> <%= render 'index' %> </div>
In my index.js.erb I have:
$('#index').html("<%=j render 'index' %>");
and in my holders_controller:
def edit holder = Holder.find(params[:id]) end def update @holder = Holder.find(params[:id]) if @holder.update_attributes(params[:holder]) format.html { redirect_to holders_path } #, flash[:success] = "holder updated") ## ^---Line 28 in error format.js else render 'edit' end end
When I load the index page it is fine. As soon as click the edit button and it submits the form, I get the following:
But if I go back and refresh the index page, the edits are saved. What am I doing wrong?
-
Noah Clark almost 12 years@Matzi I had to use
responds_to do |format|
to get it to work. -
Noah Clark almost 12 years@Matzi, Also. It works, kinda. Since it redraws the page, it's probably not any better than just reloading the page. The only way would be if I could figure out how to redraw just that one item. In any case, I now understand how to do it in the future.
-
Matthew Brown over 11 yearsThanks, NoahClark, Matzi, and all.
-
Danny almost 11 yearsQuestion: why does some code have respond_to and other code just have redirect_to and omit the respond_to do |format| block? Seems to work in both cases, most of the time...I imagine there is a default if no respond_to is present?
-
Matzi almost 11 yearsThe
respond_to
is just a selector to let you answer based on the format of the request. If you leave it out completely it will return the default rendered view on any format type. In the question the problem was with the usage offormat.html
withoutrespond_to
. -
Albert.Qing about 8 yearsThis error's description is too short to understand where is wrong.:(
-
Roshan over 4 yearsyou're a time saver!