1

我想根据 html 中的数据更改 Workorder.wostatus_id。

在我的索引 html 中,我的 wostatus.id 存储如下:

<span id="woid">4</span>

我想更新 workorder.wostatus_id = 4

这是在 workorders.js.coffee - 但是,它不起作用:

   $.ajax
     type: 'POST'
     url: 'http://localhost:5000/workorders'
     data:
       workorder:
         wostatus_id: $("#woid").val()

也许我没有得到正确的工单记录?

即使这样做也没有更新 workorder.wostatus_id

     $.ajax
       type: 'POST'
         url: "http://localhost:5000/workorders"
       data:
         workorder:
           wostatus_id: '3'

这也不起作用:

     $.ajax
      type: 'POST'
      url: "http://localhost:5000/workorder/17"
      data:
        wostatus_id: '7'

我错过了一些重要的事情。

ajax POST 是否在工单控制器中执行此代码????

 # PUT /workorders/1
 # PUT /workorders/1.json
 def update
  @workorder = Workorder.find(params[:id])

  respond_to do |format|
  if @workorder.update_attributes(params[:workorder])
    format.html { redirect_to @workorder, notice: 'Workorder was successfully updated.' }
    format.json { head :ok }
  else
    format.html { render action: "edit" }
    format.json { render json: @workorder.errors, status: :unprocessable_entity }
  end
end

更新:

我将此添加到工作订单控制器中:

 def changestatus
  @workorder = Workorder.find(params[:id])
  @workorder.update_attribute :wostatus_id, '4'
  render nothing: true
 end

我将此添加到路线中:

  resources :workorders do
   member { put :changestatus }
  end

目前在 js.coffee 中:

  $.ajax
    type: 'PUT'
    url: "http://localhost:5000/workorders/11/changestatus"
    data:
      wostatus_id: 4

(在我开始下一步工作之前,我一直在努力编写代码。)

所以 - 这行得通,工单 11 将 wostatus_id 更改为 4。

但是,现在我无法从 html 中获取正确的信息。html 包含我需要的 2 个数据字段 - 一个是哪个工作订单,另一个是 wostatus_id 是什么。

这是更新网址的html:

<div class="false" data-change-url="http://localhost:5000/workorders/16/changestatus">

我以为这会得到那个网址 - 但是,它不起作用:

$(this).data('change-url')
4

2 回答 2

1

如果我理解正确,那么我认为您在控制器需要一个数组时发送一个值,并且您使用不同的参数名称(wostatus_id在客户端,workorder在服务器上)。

也许你想要的是这样的:

$.ajax
  type: 'POST'
  url: $('#sort2').data('update-url')
  data:
    workorder: $('#sort2 span').map((i, el) ->
      el.text()
    ) // Change the selector to the elements that holds the ID
于 2013-01-08T03:24:31.087 回答
0

发现我不需要任何新的控制器代码 - 我可以使用更新。这是用于 jquery-ui 可排序的。

   receive: (event, ui) ->
     str_id =  $(ui.item).attr('id')
     woid = str_id.split('_')[1]
     $.update "/workorders/" + woid,
       workorder:
         wostatus_id: $(this).data('wostatus-id')

感谢您的帮助-您让我朝着正确的方向前进。

于 2013-01-09T16:37:24.250 回答