0

私のサイトには、ユーザーが招待を承諾または拒否することで招待に応答できるページがあります。

彼らの応答はブール値の「受諾」としてデータベースに保存され、クラス「selected」または「not_selected」(選択するとテキストがオレンジ色になります) を「出席」div または「出席しない」div に適用するために使用されます。

<% @going, @not_going = invite.accepted ? ['selected','not_selected'] : ['not_selected','selected'] %>

    <%= link_to(outing_invite_accept_path( { :outing_id => invite.outing_id, :invite_id => invite.user_id } )) do %>
            <div class="attending_div <%= @going %>">
                attending
            </div>
    <%end %>
    <%= link_to(outing_invite_decline_path( { :outing_id => invite.outing_id, :invite_id => invite.user_id } )) do %> 
            <div class="attending_div <%= @not_going %>">
                not attending</div>
            </div>
    <% end %>

いずれかの div をクリックすると、適切なコントローラー アクションに転送されます。

def invite_accept
    @outing = Outing.find(params[:outing_id])
    @invite = OutingGuest.find_by_outing_id_and_user_id(params[:outing_id], params[:invite_id])
    @invite.update_attribute(:accepted, true)
    redirect_to({:action => "index"})
end  

def invite_decline
    @outing = Outing.find(params[:outing_id])
    @invite = OutingGuest.find_by_outing_id_and_user_id(params[:outing_id], params[:invite_id])
    @invite.update_attribute(:accepted, false)
    redirect_to({:action => "index"})
end

そして今のところ、このコードは問題なく動作します。ただし、有効にするには、インデックス ページを更新する必要があります。

適切な div のリスナーにアタッチされた jQuery ajax 呼び出しを使用して、更新せずにページを更新できることはわかっていますが、そのような呼び出しがどのように見えるか、どこから始めればよいかはわかりません...

4

1 に答える 1

4

railのlink_toを使用したい:remote => true

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_toを参照してください

コールバックを処理するために、トリガーされる特定のイベントにバインドできます。例えば:

<%= link_to "Click Me!", some_path, :class => 'ajax', :remote => true %>

<script>
  jQuery(function($) {
    $("a.ajax")
      .bind("ajax:loading", console.log('loading'))
      .bind("ajax:complete", console.log('complete'))
      .bind("ajax:success", function(event, data, status, xhr) {
        console.log(data);
      })
      .bind("ajax:failure", function(xhr, status, error) {
        console.log(error);
      });
  });
</script>

このページもかなり良い記事です:http ://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

于 2012-06-28T00:23:42.163 に答える