0

我在 Rails 3.2 中有一个数据表的脚手架。当我查看表单时,我有一个用户可以更改的组合框,该值将立即存储在数据库中,而无需进入编辑模式并在那里更改并按保存。

我已经使用咖啡脚本捕获了更改的值:

$(document).ready ->
  $("#change_department").change ->
    $ajax
      url: "/Locations/" + # need to set id and new value here
      success: (data) ->
        alert data # will need to write a confirmation below the combobox

我头疼的是我应该调用什么控制器操作以及我应该如何准备数据。我正在考虑创建一个新的控制器操作,在其中我将传入模型的 id 和组合框中的新值,在控制器中我会找到模型并传入更改后的值。这可能应该是一个在 url 中有两个参数的 get 方法(我不确定如何使用 post 来做到这一点)。这是一个好的方法还是有人会建议替代方法?

我如何在上面的咖啡脚本代码中获取 id 和更改的值?

谢谢

4

1 回答 1

2

1)更新数据时,使用PUT请求。这就是 Rails 的基本 RESTful 风格(GETshowPOSTcreatePUTupdateDELETE→destroy)。所以基本上,要调用的操作是LocationsController#update(根据您发布的代码判断)。无需新动作

2)将整个更新路径data-放在元素上的一个属性中。当您说“组合框”时,我假设您的意思是“下拉菜单”,在这种情况下,它将类似于<select id="change_department" name="location[department]" data-uri="/Locations/23"> ...

$("#change_department").change ->
  url  = $(this).data("uri")
  data = {}
  data[@name] = @value
  $.ajax
    method: "put"
    url:    url
    data:   data
    success: ...

在控制器端,更新操作可以保持不变。

于 2012-05-21T01:16:21.913 回答