2013-03-18 76 views
3

我有一个任务列表应用程序,其中任务按类别显示。就地编辑Rails,jQuery和best_in_place gem

我有两个地方列出的类别。我允许使用best_in_place gem就地编辑类别名称。我工作得很好。我的问题是,因为我在两个地方有类别名称,而且我只是在原地编辑了一个类别名称,所以我需要在表单提交之后使用新名称更新未编辑的名称的其他外观。刷新/重新加载受影响的类别名称的最佳方法是什么?

谢谢。

回答

1

您需要使用回调。

使用宝石(https://github.com/bernat/best_in_place)的描述我得到这个:

<%= best_in_place @user, :name, :data => {:user_name => @user.name}, :classes => 'custom_class' %> 

$('.custom_class').bind("ajax:success", function(){ alert('Name updated for '+$(this).data('userName')); }); 

所以你的情况,你需要做这样的事情:如果你有这样的代码

$("#other_ocurrence_id").html($(this).data('userName')); 
+0

这不起作用。 :最好的数据绑定将存储引用属性的原始值。你将不得不做一些解析dom以获得新的价值。看到我的答案。 – tehfoo 2013-05-02 21:54:04

1

(HAML )

= best_in_place @user, :name, :classes => 'name-edit' 

您确实需要回拨。然而,在回调处理程序的背景下,“这个”代表呼叫制成的元素,所以你可以只是做

$('.name-edit').on 'ajax:success', (event, data, status, xhr) -> 
    $('.some-other-widget').html this.innerHTML 

,并获得新的价值的其他部件的方式。回调处理程序中的事件也具有currentTarget作为属性,该属性是启动ajax请求的小部件。但是,我不认为这是必要的。