0

AJAX と jQuery の両方を試したのはこれが初めてなので、まだ基本的なことをいじっています。

このサイトで見つけたものに基づいて多くのコードを作成しました。

オブジェクトの破棄時に、インデックス ページのオブジェクトのリストを更新したい。

コントローラーのアクション:

def destroy
  @artist = Artist.find(params[:id])
  @artist.destroy
  @artists = Artist.all
end

destroy.js.erb:

$("#post_errors").hide(300);
$("#flash_notice").html("<%= escape_javascript(flash[:notice]) %>");
$("#flash_notice").show(300);
$("#posts_list").html("<%= escape_javascript( render(partial: "list")) %>");

_list.html.erb:

<% for artist in @artists %>
  <tr>
    <td><%= artist.display_name %></td>
    <td><%= link_to "Destroy", artist, remote: true, confirm: "Are you sure?", method: :delete %></td>
  </tr>
<% end %>

index.html.erb:

<div id="artist_list"><%= render partial: 'list' %></div>

破棄リンクをクリックすると、オブジェクトを破棄するためのデータベース アクションが実行され、オブジェクトが削除されますが、インデックス ページのリストは、ページを更新しない限り更新されません。

ここで私が間違っていることは明らかですか?

4

1 に答える 1

0

JSに次の変更を加えてみてください。

$("#artist_list").html("<%= escape_javascript( render(partial: "list")) %>");

なぜなら、私があなたのコードを正しく理解していれば、IDが「posts_list」であるDOMオブジェクトのhtmlを変更しようとしているからです。

于 2012-10-07T04:32:36.713 に答える