2013-07-16 15 views
10

私はルビーで非常に新しいです - レールを試してみると、私は簡単な登録フォームをやろうとしてすでに立ち往生しています:ActionController :: UrlGenerationErrorが必要なキーが欠落:[:ID]

<%= form_for :user, url: user_path do |f| %> 
    <p> 
     <%= f.label :email %><br> 
     <%= f.text_field :email %> 
    </p> 

    <p> 
     <%= f.label :password %><br> 
     <%= f.password_field :password %> 
    </p> 

    <p> 
     <%= f.submit %> 
    </p> 
<% end %> 

これはエラーを与えています:

No route matches {:action=>"show", :controller=>"user"} missing required keys: [:id] 

これは実際に何を説明することができますか?

EDIT:

私は唯一のユーザーに投稿を変え、このチュートリアルを次のです:http://guides.rubyonrails.org/getting_started.html

+0

あなたは 'show'アクション用に登録フォームを設定しましたか? –

+0

私は非常にルビーとレールに新しいので、今はこの意味が分かりません。私は正確に公式チュートリアルに従いますが、ユーザへの投稿を変更するだけです –

答えて

1

のform_forは常にオブジェクトを取得する必要があります。..コントローラ

# controller 
def new 
    @user = User.new 
end 

# form 
<%= form_for @user,... 

それともからのユーザーのようにオブジェクトに依存しないform_tagメソッドを使用することができます。

+0

これは別のエラーを出します:初期化されていない定数UserController :: User –

+0

ユーザモデルはありますか? –

+0

チュートリアルではまだこれを行いません。レールチュートリアルが間違っていない限り:http://guides.rubyonrails.org/getting_started.html –

1

コードを見ると、あなたはuser_pathを使用しています。単一のユーザーのためのリンクを作成します。そのコードは理想的にはuser_path(@user)である必要があります。そのため、IDを要求するエラーが発生しています。

正しいモデルを指定しましたが、特定のユーザーのIDがuser_pathに必要なため、パスを指定しましたが、showアクションへの参照でIDエラーが発生しているオブジェクトをインスタンス化しませんでした。後になります。

これは物事を明確にします。

-2

あなたの問題はすでに解決されていると思いますが、Railsのコンベンションに従うことを望むならコントローラは複数(UsersController)でなければなりません:)チュートリアルで遊ぶのがずっと楽になりますあなたはあなたの好みに結果を変更するために従います!

関連する問題