1

JSON を使用してモデルを更新しようとしています。現在、put メソッドを実行することができます。

私のブラウザ コンソールから、これが表示されるので、私のリクエストは通ったと思います。

PUT http://localhost:3000/slot_allocations/1 [HTTP/1.1 200 OK  7ms]

ただし、更新したいデータをRailsに受け入れる方法がよくわかりません。誰かが私を助けてくれれば幸いです。

これは、Ajax リクエストの Jquery コードです。dataToServer は、モデルを更新するために送信したいデータです。

var url = 'slot_allocations/'+alloc_id;
var dataToServer = {slot_allocation:{timeslot:timeslot, subject:subject,slot_allocation_id:alloc_id-1, group_id:"Group 2", lesson_type:"Tutorial"}}

$.ajax({
  type: "PUT",
  url: url, 
  dataType: "json",
  data:  JSON.stringify(dataToServer) , // message to send goes here
  success: function (data)
  {
  }
});

コントローラーの update メソッドには、次のコードがあります。

  def update
    @slot_allocation = SlotAllocation.find(params[:id])
    respond_to do |format|
      if @slot_allocation.update_attributes(params[:slot_allocation])
        format.html { redirect_to @slot_allocation, notice: 'Slot allocation was successfully updated.' }
        format.json { render :json=>@slot_allocation.as_json }
      else
        format.html { render action: "edit" }
        format.json { render json: @slot_allocation.errors, status: :unprocessable_entity }
        format.js  { render :js => @slot_allocation.errors, :status => :unprocessable_entity }
      end
    end
  end

これが私の as_json メソッドです。サーバーからクライアント側への送信要求に使用していますが、同じ方法を使用してクライアントからサーバー側に情報を送信できるかどうかはよくわかりません。

  def as_json(options={}) 
  {
     :group_id =>self.group_index,
     :lesson_type =>self.lesson_type,
     :timeslot =>self.timeslot_id,
     :subject =>self.subject_id,
     :slot_allocation_id => self.slot_allocation_id
  }
  end

モデルを更新するためにRailsにパラメータを受け入れさせる方法にあまり慣れていないので、誰かが私を案内してくれれば幸いです。

4

1 に答える 1

0

最初に JSON パラメータを解析する必要があると思います。

attributes = ActiveSupport::JSON.decode(params[:slot_allocation])
if @slot_allocation.update_attributes(attributes)
  ...
end

Ruby on Rails で JSON を解析するにはどうすればよいですか?

于 2012-12-31T16:51:16.453 に答える