1

我正在尝试使用 Rails gem 'bootstrap-editable-rails' (X-editable for Bootstrap)。

我想要一个复选框,但 x-editable 没有复选框。相反,您应该使用“清单”类型(我真的希望 x-editable 可以处理布尔复选框)。

这是我的 Rails 表单代码:

<td>
<a href="#" class="checklist" data-type="checklist" data-pk="1" data-resource="taskup" data-name="donebox" data-url="/taskups/<%= taskup.id %>" >
<%= taskup.donebox ? taskup.donebox : "False" %>
</a>
</td>

这是 jquery(咖啡脚本)

$(".checklist").editable
type: 'checklist'
source:
  1: "True"

我得到了 x-editable 弹出窗口,但不是将“1”保存到 donebox 字段中,而是放入“----'1'”

见附图。

谢谢您的帮助!

在此处输入图像描述

4

1 回答 1

1

我使用了没有 gem 的 bootstrap-editable 1.5.1 并在复选框中遇到了类似的问题,这是由于发送到后端的布尔值将是一个数组(因为清单类型),即在rails log 你会得到类似的东西:

Parameters: {"id"=>"257", "geo_entity"=>{"is_current"=>["1"]}}

我通过修改 params 方法中的复选框字段来解决这个问题,就像这样(你会看到我也在准备 Rails 期望更新资源的格式的参数):

  params: (params) ->
    value = params.value
    # is_current will be a checklist and therefore
    # the value will be an array such as ['1']
    if params.name == 'is_current'
      value = params.value.unshift()
    #originally params contain pk, name and value
    newParams = id: params.pk
    newParams['geo_entity'] = {}
    newParams['geo_entity'][params.name] = value
    newParams

我也希望看到一种更清洁的方式来做到这一点!

于 2013-12-12T16:06:12.177 回答