3

ショーページには、定期的なイベントの発生日のリストと、連続する日付間の最大、最小、平均間隔などのすべての日付に対して計算された統計が表示されます。

best_in_place gemを使用して、日付をインプレース編集できるようにします。ただし、日付が変更されるたびに、統計を計算してサーバーから再レンダリングする必要があります。

統計を再レンダリングできるように、コールバック関数をbest_in_place編集の完了にフックするにはどうすればよいですか?

これはshow.html.erbの私のRailsコードです

<td id="event_date">
  <%= best_in_place @event, :occur_date %>
</td>

これはhtmlで

<td id="event_date"> 
    <span class='best_in_place' id='best_in_place_event_132_occur_date' data-url='/events/132' data-object='event' data-attribute='occur_date' data-type='input'>2012-03-23</span>
</td>

次のコーヒースクリプトコードを試しました。

jQuery ->
$("#best_in_place_event_*_occur_date").live 'ajax:complete', (evt, data, status, xhr) ->
  alert "a date has changed"

これは機能していないようです。日付(occur_date)を編集しても何も起こりません。

best_in_placeの編集が成功したときにイベントをトリガーする方法を知っている人はいますか?

4

2 に答える 2

2

ソースを見ると、best_in_place が loadSuccessCallback で ajax:success イベントを正しく起動しているようです。つまり、jQuery を使用して、独自の関数を変更されたイベントにバインドできるはずです。

$(".best_in_place").live 'change', (event) ->
  alert "Hello, World!"
于 2012-04-18T01:15:13.403 に答える
1

あなたの例のように:

<td id="event_date">
  <%= best_in_place @event, :occur_date, :classes => 'bip_date' %>
</td>

$('.bip_date').bind("ajax:success", function(){
alert("a date has changed")
});
// or: $('.event_data .best_in_place').bind(...)    

そして公式のreadmeから:

「ajax:success」イベントは、成功時にトリガーされます。

バインドを使用:

$('.best_in_place').bind("ajax:success", function ()
{$(this).closest('tr').effect('highlight'); });

特定のフィールドに固有のコールバックをバインドするには、ヘルパー メソッドで 'classes' オプションを使用してから、そのクラスにバインドします。

<%= best_in_place @user, :name, :classes => 'highlight_on_success' %>
<%= best_in_place @user, :mail, :classes => 'bounce_on_success' %>

$('.highlight_on_success').bind("ajax:success", function(){bip_date});
$('.bounce_on_success').bind("ajax:success", function(){$(this).closest('tr').effect('bounce'));});
于 2014-03-11T22:45:27.113 に答える