2011-06-27 21 views
17

現在、プロジェクトに取り組んでおり、以前には出会ったことのない問題が発生しました。現在、ユーザーにサインアップするためのログインサインアップページを実行しています。私は前に未定義のメソッド `name'errorを持っていて、そのメソッドがfull_nameと呼ばれた名前と呼ばれていないことに気付きました。私はすべてのフォルダを通過して、どのメソッドや属性も '名前'と呼ばれず、名前が 'full_name'に変更されていることを確認しました。ブラウザをリフレッシュして、私が以前に見たことのない次のエラーを受け取ります。このエラーが何であるか、どうすれば解決できるか説明してください。ハンドラ=>:ERB:RJS、:ビルダー、 :RHTML、:rxml]:テンプレートがありません

テンプレート {で作成/テンプレートユーザーが欠落

が欠落しているフォーマット=>:HTMLビューのパスでエン]} ]、 :ロケール=> [::アンは、 "C:/ユーザー/ patterd /ドキュメント/プロジェクト/アプリ/ビュー"

答えて

42

あなたがリダイレクトしない場合、このエラーが発生しましたコントローラのcreateメソッドで

コントローラでcreateメソッドをリダイレクトするか、エラーが発生した場合に新しいフォームをレンダリングしていますか?

コントローラ内のcreateメソッドでリダイレクトを行わない場合は、create.html.erbという新しいファイルを作成する必要があります。私の場合は

def create 
    # some object you want to create 
    # if the object.save is fine 
    # redirect_to object 
    # else 
    # render new with the errors 
    # end 
end 
+0

私はuser_Controllerを持っていて、createメソッドを含んでいます。後に続く 'code'def create @user = User.new(params [:user]) の場合@ user.save #保存に成功しました。他 @title =例えば、いくつかのページredirect_to、リダイレクト保存OK.after「新しい」 エンド エンド – David

+3

をレンダリング 「サインアップ」:それはページの1に行くように、ショー:アクション=>をあなたは.html.erb拡張子を持っています。通常はindex.html.erb(redirect_to:action =>:index)またはshow.html.erb(redirect_to:action =>:show)になります。 – felix

+0

ああ大丈夫です。私はなぜこのエラーを受け取っているのですか?どうもありがとう。 – David

19

の下に表示のように通常、正常に作成した後、あなたは私が何のビューを処理していないし、レンダリングするために持っていたいくつかの他のページにリダイレクトします。

def return_payment 
    # do lots of stuff 

    head :ok 
end 
+0

それはまた働くことができます – David

2

私は同じ問題を抱えていたし、その理由は、私が誤って他の空を残したということでした一般的にテンプレートエラーが不足している方法:)

2

「を作成」あなたがそのメソッドのビューファイルを持っていない-when を発生または - メソッドがビューファイルを持たない計算だけの場合、メソッドをレンダリングまたはリダイレクトする必要があります。

メソッドをレンダリングまたはリダイレクトしないと、現在のメソッド名のビューページが検索されます(この場合、create.html.erbを検索します)。したがって、メソッドをレンダリングまたはリダイレクトする必要があります。

0

私は同じ問題があり、ちょうどredirect_toを追加しました!

def update 
    @visitor = Visitor.find(params[:id]) 
    if @visitor.update_attributes(visitor_params) 
     flash[:notice] = "Update ok!" 
     redirect_to root_path #just added this line and it worked! 
    else 
     render 'edit' 
    end 
end