2012-03-02 12 views
9

私は非常に単純な問題だと思っています。私はPhPのバックグラウンドから来て、いつもこれをやっていましたので、私はこれを間違った方法で見ているかもしれません。Ruby on Rails:表示なしのアクション

私はRoRでajaxハンドラを作成しようとしています。ユーザがボタンをクリックすると、JavaScriptがPOSTを起動し、jQueryのajax関数の "success:"パラメータを使用してユーザにフィードバックを与えます。

問題は、RoRがajaxハンドラのビューを読み込もうとしています。実際にはデータベースの作業を行うためにコントローラにいくつかの行が必要なだけで、ユーザが解釈するステータスコードをエコーし​​ます。 javascript。

これはすべてメールの購読予約ページなので、私は「ホーム」コントローラーのみを使用しています。

マイルート;

map.root :controller => 'home' 
map.connect '/mcsubscribe', :controller => 'home', :action => 'mcsubscribe' 

マイホームコントローラ;

class HomeController < ApplicationController 
    def index 
    # no content 
    end 
    def mcsubscribe 
    print params[:email] 
    end 
end 

私のテスト用のJavaScriptで、何が起こっているのか分かります。

function mcSubscribe() { 
    var email = jQuery("#signup_input_email").val(); 
    jQuery.ajax({ 
     type: "POST", 
     url: "http://domain.com/mcsubscribe", 
     data: "email=" + email, 
     cache: false, 
     success: function(result) { 
      alert(result); 
     } 
    }); 
} 

私は、これは共通の問題だろうと思ったが、私の周りGoogleで検索して唯一のユーザーが適切なようではありません/ mcsubscribeページを訪問することはありませんよう、リダイレクトする提案を見つけることができました。 render :text => "yourtext"

print params[:email] 

を使用して

答えて

11

あなたのニーズに合わせなければならない、あなたの質問を読み違えるだけにその値を出力します:

12

はあなたがrender :nothing => true

EDITが必要になる場合がありますhttp://guides.rubyonrails.org/layouts_and_rendering.html#using-render

を見てくださいアプリケーションログではなく、応答に記録されます。

あなたはこの希望:

def mcsubscribe 
    # Do something to unsubscribe 
    respond_to do |format| 
    format.html { redirect_to(success_page) } 
    format.js { render :text => params[:email] } 
    end 
end 

AJAXを使用する場合は、​​がテキストとして送信される:あなたはこのようなものが必要だろう

render :text => params[:email] 
+0

何もレンダリングしないでOPを達成するために望んでいるまさにではありません。彼は 'params [:email]'の値だけを出力したいと考えています。 – Koraktor

+0

あなたのリンクから** render:text => params [:email] **は完璧に感謝しています!私はそれが単純でなければならないことを知っていた。 – lynks

0

を。 HTML形式が必要な場合(ユーザーがリンクをクリックしたり、通常のフォームに記入されている場合)、リダイレクトが発行され、ユーザーにサブスクリプションが成功したことが伝えられます。

あなたは「平野」を使用する必要がRailsの5では
+0

コントローラから「はい」が返ってきたらフォームをフェードアウトし、メッセージにフェードインして、すべてのユーザーのフィードバッククライアントを実行します。 – lynks

+0

完全性のためにちょうど表示:)と利点は、JavaScriptが有効になっていないユーザーのために働いている(有効)、残っている場合は... – Veger

関連する問題