39

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

インデックスページをロードすると問題ありません。編集ボタンをクリックしてフォームを送信するとすぐに、次のように表示されます。

ここに画像の説明を入力してください

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

4

1 に答える 1

126

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について疑っています、私はそれがあなたの考えどおりに実際に機能するとは思いません。

于 2012-06-26T14:48:08.487 に答える