1

私はレールを初めて使用し、この素晴らしいガイドを使用して新しいアプリで簡単な連絡先フォームを作成しています: contact-form-in-rails-3

すべてが機能しますが、私が構築しているアプリには、視聴中に質問を送信するための連絡フォームを備えたライブ ストリームがあります。問題は、現在メッセージを送信すると、にリダイレクトされることroot_pathです。アプリがページをリダイレクトまたはリロードしないこと、およびフラッシュが検証フラッシュと同様の方法で表示されることが必要です。以下のコントローラーから、これが起こっている理由を理解しています。

Class ContactController < ApplicationController

  def new
    @message = Message.new
  end

  def create
    @message = Message.new(params[:message])

    if @message.valid?
      NotificationsMailer.new_message(@message).deliver
      redirect_to(root_path, :notice => "Message was successfully sent.")
    else
      flash.now.alert = "Please fill all fields."
      render :new
    end
  end

end

ただし、リダイレクト行を次のようなものに変更しようとすると:

flash[:notice] = "メッセージは正常に送信されました。"

フォームの送信を停止します。

アドバイスをいただければ幸いです。

ありがとう

4

2 に答える 2

0

または、指定された情報と通知メッセージを使用して、同じページをレンダリングするだけです。

ajaxを送信したときにリダイレクトが発生したときにできることは次のとおりです。

コントローラーで:

respond_to do |format|
    format.js { head :no_content }
    format.html { head :no_content}
end

あなたのajaxで:

したがって、基本的に、 event.preventDefault() はボタンの正常な動作を阻害し、ページをリロードすべきではありません。

$('#selector').click(function(event){
        event.preventDefault();
//Do whatever you want
    });
于 2013-08-15T00:46:50.757 に答える