2012-02-10 25 views
1

問題があります。フォームの検証が失敗したときにjavascript関数を呼び出す必要があります。 私はこれをやろうとしています。 comment_controllerの作成アクションです。検証に失敗した場合はjavascriptを呼び出す

def create 
    p params 
    @comment = parent.comments.build(params[:comment].merge(:ip => request.remote_ip)) 
    if @comment.save 
     redirect_to @page.url, :notice => "grats" 
    else 
     @country = @page.country 
     @city = @page.city 
     respond_to do |format| 
     format.html { render :template => "pages/show" } 
     format.js { render "pages/show" } 
     end 
    end 
    end 

とページ/コード

$('.main').fadeOut(5000); 

を持ってshow.js.erbが、それは動作しません。私は別のjsコードを試しましたが、それもうまくいきませんでした。私は何を間違っているのですか?

答えて

0

あなたが試した他のjsコードは何ですか?

alert("foo"); 

は、「メイン」全く存在し、クラスでHTML要素を行いますよう

最も単純なことはすべきですか? (あなたのソースコードを見てください)

あなたの応答は実際にshow.js.erbファイルをレンダリングしますか?あなたのサーバーのログがあなたに伝えます。

Rendered portal/cart_items/update.js.erb (38.4ms) 
Completed 200 OK in 650ms (Views: 51.3ms | ActiveRecord: 6.5ms) 

最初の行は、ajax応答の典型的なものです。

FireBugは、サーバー側で何が起こるかを確認するのに役立ちます。

+0

私はクラスmainの要素を持っています。 'アラート( "foo");'もはや動作しません( –

+0

)jsをレンダリングしていない可能性が非常に高いですが、production.logの内容は何ですか(log/production.logまたは端末のサーバ出力を見てください)。 –

+0

レイアウト/アプリケーション内でページ/ show.html.erbをレンダリングしました。なぜそれがshow.js.erbを持たないのか分かりません。 –

-1

コメントを追加しようとしたページにリダイレクトしたいと思いますか?

もしそうなら、私は簡単にエラーを表示しますその前に、クライアント側のJavaScriptで基本的な検証を行うことをお勧めしますが、

else 
    @country = @page.country 
    @city = @page.city 
    flash[:errors] = "Your error message..." 
    redirect_to @page 
end 

を試してみてください。

+0

私はコメントを追加しようとするページをレンダリングしています。 jquery通知プラグインを使用してエラーメッセージを表示します。だから私はJavaScriptを使用する必要があります。しかし、私はどのようにわからない –

関連する問題