8

私は数日間、 POSTmanから通常の 1 つのモデル Rails アプリに書き込もうとしていますが、その方法がわからなかったり、その方法に関する情報を見つけることができません。

私のアプリには、名前フィールドを持つ User モデルがあります。私がやろうとしているのは、POSTman を使用して JSON 経由で名前をリモートで変更することだけです。

これを行う方法に関する基本的なリソースへのリンクを含め、これを行う方法に関するヘルプを歓迎します。

これはかなり基本的なことだと思います。

編集:これはPOSTman出力のスクリーンショットです

ここに画像の説明を入力

編集2:

サーバーログから:

Started PUT "/users/1.json" for 127.0.0.1 at 2013-07-17 16:53:36 -0400
Processing by UsersController#update as JSON
  Parameters: {"name"=>"Jeff", "id"=>"1"}
  User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", "1"]]
   (0.1ms)  begin transaction
   (0.1ms)  commit transaction
Completed 204 No Content in 3ms (ActiveRecord: 0.4ms)

トランザクションは発生していますが、レコードは実際には更新されていません。コントローラーで何かを変更する必要がありますか? これは、変更のない通常のレール生成コントローラーです。

編集3:

これが私の出力ですhttp://localhost:3000/users/1.json

{
"created_at": "2013-07-02T21:51:22Z",
"id": 1,
"name": "Arel",
"updated_at": "2013-07-02T21:51:22Z"
}

繰り返しますが、足場から何も変更していません。答えが示唆するように、JSONをフォーマットしてユーザーの下にネストする方法を理解できませんでした。

これが私のコントローラーの関連部分です:

# GET /users/1
  # GET /users/1.json
  def show
    @user = User.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @user }
    end
  end

# PUT /users/1
  # PUT /users/1.json
  def update
    @user = User.find(params[:id])

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

なぜこれが難しいのか理解できません。JSON経由で名前を更新しようとしています...

4

1 に答える 1

5

投稿先のコントローラーの場合:

protect_from_forgery with: :null_session

or like from: Facebook キャンバス アプリの Rails 3 で protect_from_forgery をバイパスするにはどうすればよいですか?

skip_before_filter :verify_authenticity_token, :only => [THE ACTION]

編集

JSON が正しくありません...投稿しています

{"name"=>"Jeff", "id"=>"1"}

あなたのコントローラーはそうするのでuser.update_attribute(params[:user])、あなたのJSONはユーザー属性の下にある必要があります

{
    "id": 1,
    "user": {
        "name": "Jeff"
    }
}

これにより、のハッシュが作成されます

{"user"=>{"name"=>"Jeff"}, "id"=>"1"}
于 2013-07-17T20:45:49.093 に答える