0

ログインシステムを作ろうとしています。私の UserController は、newアクションを制御するためにこれを持っています:

def new
    @user = User.new

    respond_to do |format|
        format.json { render :json => @user }
        format.html
    end
end

私のroutes.rbにはこれがリンクされています:

resources :user

新しいユーザーを作成するビューのフォームは次のとおりです。

<%= form_for @user do |f| %>

ただし、次のアクション コントローラー エラーが表示されます。

undefined method `users_path' for #<#<Class

私を困惑させたのは、なぜそれを使用しているのかですusers_path。これは私のルートへの複数形の参照です。??の複数エラーを返すのはなぜuser_pathですか?? 「resources :users」をルーティングすると、エラーはクリアされますが、もちろん、そのリソースに対して何も設定していないため、他のエラーが発生します。

4

2 に答える 2

2

内部form_forでは、モデルが永続化されているかどうかに基づいて、適切なアクションとメソッドが作成されます。

モデルが永続化されていない場合、 のアクション:newと のメソッドが作成されます:post。永続化されている場合は、代わりに:updateandになり:putます。

:newデフォルトの URL は「/users」で、「:edit/users/:id」です。

修正はジムが言ったとおりです。(私を打ち負かしてください。) url オプションを に適用しますform_for

于 2013-01-21T04:57:34.247 に答える
1

resources :users単一のユーザーではなく、ユーザーのコレクションであるため、実際には正しい構造です。ルートの構築も複数のパスを想定しているため (IIRC、ルートではなく が見つからない限り、複数のパスが想定resourceされresourcesます)、したがって、 を使用しようとしますusers_path

明示的な url パラメーターを渡すことも別のオプション<%= form_for @user, :url => user_path do |f| %>です。

于 2013-01-21T04:49:14.980 に答える