2012-04-30 9 views
3

私は最初のレールアプリケーションを構築しており、ルビーとレールの両方に新しいものです。私はフォームがajaxを介して送信された後にページに送信メッセージを表示しようとしています。Rails ajax formサブミットメッセージ

自分のフォームに:remote => trueパラメータを追加しました。しかし、私は私のアプリケーションでメッセージをレンダリングすることができないようです。テストとして、私は新鮮なレールアプリを設定し、足場モデルを使用し、足場を使ってフォームを表示しました。

生成されたフォームにremote:remote => trueを追加しました。データをdbに正常に送信します。私いくつかのチュートリアルは、あなたがちょうどnew.js.erbを追加することができます言っている

にposts_controller.rb funcを更新し、この場合、私はちょうどformat.jsとJSが含まれるように、コントローラを更新することができ
def new 
    @post = Post.new 

    respond_to do |format| 
    format.html # new.html.erb 
    format.js 
    end 
end 

を読んだりしていますviews/postsフォルダ内のcreate.js.erb(どのファイルかを確認する必要があります)を実行する必要がありますが、送信されるデータ以外は何も起こりません。

私も試してみました:テストとして

format.js { render :js => "alert('Hello Rails');" } 

を。

私はレール3.1を使用して、私はあなたがほとんどそこにいる次の

答えて

7

を試してみてください何に途方に暮れていますしています。送信されたフォームは新規作成ではなく、作成アクションによって処理されます。 htmlやjsを扱うための構文があります。作成アクションではその必要があり、レンダリングしたいjsを含むcreate.js.erbが必要です。

あなたPostsControllerのは

alert('Hello Rails'); 

を含む、(ポスト用ビューディレクトリ内)create.js.erbという名前のファイルを作成します

def create 
    @post = Post.new(params[:post]) 

    respond_to do |format| 
    if @post.save 
     format.html 
     format.js 
    else 
     format.html { render :action => 'new' } 
     format.js { render 'fail_create.js.erb' } 
    end 
    end 
end 

の線に沿って機能を作成しているはず

成功事例のために行くべきである。 fail_create.js.erbという名前の2番目のファイルを作成します。エラーが発生した場合(たとえば、送信されたフォームデータがモデルの検証をパスしなかった場合など)、レンダリングしたいjavascriptを使用します。

+0

私の警告メッセージが機能していない、私はファイルwil ext .js.erbを作成し、アクションと同じ名前です。私のコードはjs.erb 'alert(" Hello、AJAX! "); alert( 'asas'); 'コンソールログにファイルがレンダリングされていることが表示されていますが、警告メッセージが表示されません。何が問題なの? – RAJ

関連する問題