0

これは私の心を吹き飛ばします、そして私がここで助けを求める必要があるほど多くのことが起こっています。

現在、リソースのリストがあります。各リソース内では、リンクをクリックすることで、誰かが「お気に入りとして追加」することができます。私はそれを通常のリダイレクトで動作させていますが、ページを更新せずにお気に入りにできるようにajaxを統合することに関しては、私は完全に失われています...

  1. 今、私はそれを「置く」アクションとして持っています。それはCRUDの「更新」のようです

FavoriteController(更新はこのコントローラーの唯一のアクションです)

  def update

    @favorite = Favorite.find_or_initialize_by_resource_id_and_user_id(params[:id], current_user.id)

    if @favorite.persisted?
      @favorite.destroy
    else
       if @favorite.valid?
          @favorite.save
       end
    end

    redirect_to root_url
  end

私の見解:

<%= link_to "", favorites_path(:id => resource.id), :class => "star#{star_post?(resource)}", :method => "put" %>

私のルート:

  resource :favorites, :only => [:update]

私のJS:

  $('.res-list .star').click(function(){
    $.put('/favorites/?id=' + $(this).attr('data-id'));
    return false;
  });
4

2 に答える 2

5

これを行うにはいくつかの方法があります。これを使用link_to_functionして、javascriptメソッドを渡すことができます(ビューまたはapplication.jsで定義した場合は、カスタムメソッドを渡すこともできます)。このメソッドでは、更新アクションを実行するようにAJAX呼び出しを設定できます。

ビュー(jQueryのputマクロを使用):

<%= link_to_function "AJAX Link", "$.put('/favorites/#{resource.id}');" %>

これを行う別の方法は、リンクに追加のHTMLセレクターを与えることです。繰り返しになりますが、更新アクションを実行するには、少しjsを作成する必要があります。<a href="#">タグの代わりにボタンなどを使うのが好きなので、この方法が好きです。(正直なところ、代わりにbutton_to_functionを呼び出すメソッドを作成することになりました)content_tag(:button)content_tag(:a)

于 2012-05-12T01:00:03.817 に答える
1

基本的なJQueryとAjaxの処理についてこのRailscastから始めることをお勧めします。それは少し時代遅れですが、それでもかなりしっかりしていて、あなたが始めるための基本をあなたに与えるでしょう。

http://railscasts.com/episodes/136-jquery

これにより、ajax呼び出しをページ上の要素にアタッチし、リクエスト処理を処理し、ユーザーのフォームを更新する基本的なjavascriptビューパーシャルを作成する方法がわかります。

幸運を!

于 2012-05-12T00:49:52.557 に答える