Rails 3 best_in_place_if如何添加" id"属性到元素

时间:2016-05-20 12:53:27

标签: ruby-on-rails ruby-on-rails-3 best-in-place

我使用best_in_place_if进行内联编辑。在这里,我想通过使用best_in_place的ajax成功事件来捕获当前元素的id。

下面是我尝试添加id属性的代码段。但是当我检查html时,id属性的值是bes_in_place生成的默认值。根据他们的文档,它提到可以通过提供我们自己的值来更改默认值。

id属性的默认值显示为id =" best_in_place_trip_32_is_active"我想要的只是id = 32

best_in_place_if(current_user.admin,trip,:is_active, :type => :checkbox, :classes => 'trip_disable', :id => trip.id)

请让我知道我错过了什么。

1 个答案:

答案 0 :(得分:1)

首先,您不应该尝试为元素使用仅限数字的ID属性,violates the HTML specs

然后,要在成功回调中访问当前已修改记录的id,您可以将记录id添加到数据属性。这样的事情应该有效:

# adding the record ID to the data attribute
best_in_place_if(current_user.admin, trip, :is_active, :as => :checkbox, :class => 'trip_disable', :data => { :id => trip.id })

# accessing the record ID in the success calback
$('.best_in_place.trip_disable').bind("ajax:success", 
                         function(){ 
                            alert('Record ID is '+$(this).data('id')); 
                         });

有关详细信息,请参阅Best in place docs