web-dev-qa-db-ja.com

引数が少なすぎます

RailsアプリでJavascriptを動作させようとしています。

インデックスページで、インデックスページの個々のアイテムを編集し、編集時にインデックスページを再読み込みできるようにしたいのですが。

私のindex.html.erbページは次のようになります:

<div id="index">
<%= render 'index' %>
</div>

私のindex.js.erbには:

$('#index').html("<%=j render 'index' %>");

そして私の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

索引ページをロードするときは問題ありません。編集ボタンをクリックしてフォームを送信するとすぐに、次のようになります。

enter image description here

しかし、戻ってインデックスページを更新すると、編集内容が保存されます。何が悪いのですか?

34
Noah Clark

responds_toブロックの書き込みを忘れました:

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

しかし、私はあなたのindex.html.erbに疑いを持っています、私はそれがあなたの考えている方法で本当にうまくいくとは思いません。

111
Matzi