Rails,当用户选择组合框值时更改db值

时间:2012-05-20 21:58:35

标签: jquery ruby-on-rails-3 coffeescript

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

我使用coffeescript捕获了更改后的值:

$(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和组合框和控制器中的新值,我会找到模型并传入更改的值。这可能应该是一个在网址中有两个参数的get方法(我不知道如何使用post进行此操作)。这是一个很好的方法,还是有人建议替代方法?

如何在上面的coffeescript代码中获取id和更改后的值?

由于

1 个答案:

答案 0 :(得分:2)

1)更新数据时,请使用PUT请求。这是Rails的基本REST风格(GETshowPOSTcreatePUTupdate,{{ 1}}→破坏)。所以基本上,要调用的动作是DELETE(根据您发布的代码判断)。无需新动作

2)将整个更新路径放在元素的LocationsController#update属性中。我假设你的意思是"下拉"当你说" combobox",在这种情况下,它就像data-

<select id="change_department" name="location[department]" data-uri="/Locations/23"> ...

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