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