知っておくべきことが2つあります
- Ruby は、記号 (
:controller
、:update
) と文字列 ( 'controller'
、 ) を区別します'update'
。
- この場合、指定する必要はありません
:url
。
したがって、現在のコードでは、正しい行は単純です。
form_for @user do |f|
@user
が新しいレコードの場合は、 のアクションをform_for
指し、 が既存のレコードの場合は、自動的にアクションを指します。Railsはこれを行うのに十分賢いです:-)create
UsersController
@user
form_for
update
:url
本当にの属性を使用したい場合はform_for
、次の 2 つのオプションがあります。
- ルーティング ヘルパー メソッドを使用します。
form_for @user, :url => user_path(@user), :method => :put
- 正しいパス ハッシュを使用します。
form_for @user, :url => { :controller => :users, :method => :update, :id => @user.id }
resources :users
Rails では、REST スタイルを使用してURL を作成する場合config/route.rb
(これを使用することをお勧めします)、知っておく必要があることが 2 つあります。 -コレクションはエンティティのグループ (この場合はユーザー) -メンバーは 1 つのエンティティです。
したがって、コレクション URL は複数のエンティティが期待できるものであり、メンバー URL は 1 つのエンティティしか期待できないものです。
コレクションではなくメンバーに対してのみ実行できるため、URL ハッシュでアクションを:id
記述する場合は使用する必要があります。したがって、何をしたいのかを明確にするために、特別な HTTP メソッド ( ) を使用してメンバー URL を作成する必要があります。update
update
PUT