0

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とコンボボックスの新しい値を渡す新しいコントローラーアクションを作成し、コントローラーでモデルを見つけて変更された値を渡すことを考えています。これはおそらく、URL に 2 つのパラメーターを持つ get メソッドである必要があります (post を使用してこれを行う方法がわかりません)。これは良いアプローチですか、それとも誰かが別の方法を提案しますか?

上記のcoffeescriptコードで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 に答える