2011-01-23 23 views
2

私は最終的に私のレールアプリのためのいくつかのテストを書くべきだと思った。rails controller test、取得ActionView :: MissingTemplate:テンプレートがありません

私のコントローラは "UsersController"です。それは、私はちょうどレールのコントローラにポストを送信するiPhoneのアプリを持っているので、任意のHTMLがありません。ここで

は私のテストで:

require 'test_helper' 

class UsersControllerTest < ActionController::TestCase 


    def test_create 
    # to http post 
    # /users 
    #user[email]=%@&user[password]=%@&user[password_confirmation]=%@ 
    #post 
    post(:create, :user => {:password => "testpassword", :password_confirmation => "testpassword"}) 
    end 

問題は、私はこのエラーを取得することです:

1)エラー: test_create(UsersControllerTest): ActionView :: MissingTemplate:で新しい欠落テンプレートユーザー/ビューパスの{:ハンドラー=> [:erb、:rjs、:ビルダー、:rhtml、:rxml]、:フォーマット=> [:html]、:ロケール=> [:en、:en]}

だから私はそれがHTMLページを埋めることを試みていると思いますか?もしそうなら、私はこの奇妙なことがわかります。私はそれがコントローラへの投稿を直接行うと思うだろう。誰かがこの「ポスト」メソッドがHTMLフォームを試してポピュレートすることを確認できますか?

この場合、HTTPポストをコントローラに直接送信するテストを作成するにはどうすればよいですか?任意のヘルプ

答えて

1

ため

おかげで、あなたはそれ以外の場合はpost方法を、それを教えてくれない限り、要求されたコンテンツタイプがHTMLであると想定。アクションは、それが存在しない「ユーザー/新しい」、これエラーをレンダリングしようとすると失敗した場合

@user = User.new(params[:user]) 
if @user.save 
    redirect_to posts_path 
else 
    render :new 
end 

:通常createアクションは、次のようになります。

ここにはいくつかの問題があります。期待されるコンテンツタイプ(XML?)は明確ではありません。アクションは失敗していますが、理由はわかりません。質問を編集してコントローラアクションが何をするかを示すのに役立つかもしれません。

6

あなたはそれを動作させるために、「フォーマット」を指定することができます。

post(:action, {'param1'=>'value1', 'param2' => 'value2', :format => 'js'}) 
+0

私はJavaScriptを返したコントローラへのAjaxポストをしていました。形式をjsとして指定すると、私の問題を解決しました。 –

関連する問題