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

Rails 3 best_in_place_if how to add "id" attribute to element

我正在使用 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)

请让我知道我缺少什么。

首先,您不应尝试为元素使用纯数字 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