私はRails Tutorialの2章目です。マイケル・ハートルです。Rails:POSTリクエストがメインURL(/ users)に送信されるのはなぜですか?
私はこれを行うとき:
# GET /users
# GET /users.json
def index
@users = User.all
end
# GET /users/1
# GET /users/1.json
def show
end
# GET /users/new
def new
@user = User.new
end
# GET /users/1/edit
def edit
end
# POST /users
# POST /users.json
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /users/1
# PATCH/PUT /users/1.json
def update
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
# DELETE /users/1
# DELETE /users/1.json
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to users_url, notice: 'User was successfully destroyed.' }
format.json { head :no_content }
end
end
私はhttp://localhost:3000/users/new
に行くとき、私はどこをチェックするとき、私は新しいユーザーを追加するためのページを取得しますが:
rails generate scaffold User name:string email:string
をこれは私のusers_controller.rb
のように見えるものです新しいユーザーへのリクエストが送信されています。投稿されたメッセージは/users
で十分です。
/users/new
ではなく、新しいユーザーが/users
に送信されるのはなぜですか?これはある種の大会ですか?私は別の足場を作り、それは同じように動作します。私は以前Flaskで作業していましたが、POSTリクエストコードをGETリクエストを受け入れた同じメソッド/関数に追加しました。これはなぜここに当てはまりませんか? Railsは新しいユーザーのPOSTリクエストを/users/new
に送信できませんでしたか?なぜ/users
URIですか?これは私を混乱させる。すべてのリンクはすばらしいでしょう。ありがとうございました!
クイック編集:私が追加したくないもの。私はこれらのURIをURIと考えるべきではなく、私が提出する何らかの抽象的なエンティティと考えるべきであるからです。たとえば、新しいユーザーを追加するときに、ユーザー(/users
)を追加すると、/users/new
に追加するよりも理にかなっていますか?このロジックを使用すると、/users/id
に送信するPUTメソッドは、URIとは対照的に、既存のユーザーエンティティに送信しているので意味があります。
'/ users/new'はGETリクエスト用のセットで、新しいユーザーフォームを見ることができます。フォームを送信すると、 '' POST'/users'というアクションを作成するように要求します。何も問題ありません。 –