0

私のアプリには、いくつかのコードを含むコントローラーアクションがあります..

users_controller.rb

   def my_method(age)
     if age >18
      flash[:notice]= "You are eligible."
     else
      flash[:notice]= "You are not eligible."
     end
    end

私はjqueryを介してmy_methodを呼び出しています...(コーディングはjqueryダイアログの送信ボタンにあります)

 jQuery.post('/users/my_method/', { age: jQuery('#age').val() });

しかし、フラッシュメッセージは表示されませんが、ログでメソッド「my_method」が呼び出されているのを見ました。これらのフラッシュ メッセージを表示する方法を教えてください。

4

2 に答える 2

0

これはajaxリクエストであるため、jsonによる応答を(rjsなどを介して)処理する必要があります。

次のコードで例を示します(これは私の実際の動作コードの1つです)

例:新しい友達を追加する

#friends_controller.rb
class FriendsController < ApplicationController
  #<other methods>
  def create
    @friend = Friend.new(params[:friend])
    if @friend.save
      flash.now[:success] = ["Friend request successfully sent"]
      respond_to do |format|
        format.js
      end
    else
       render action: "new"   
    end
  end
end

#view/friends/_form.html.erb
<%= form_for @friend, :remote => true do |f| %>
 #code
<% end %>

#view/friend/create.js.erb
$("#message_id").html("<%= escape_javascript raw(flash_display) %>");

note : flash_display is a helper method I used to display my messages

#helpers/application_helper.rb

def flash_display
    response = "<div class='alert #{alert_class}'>"
    response += "<button type='button' class='close' data-dismiss='alert'>x</button>"
    flash.each do |name, msg|
      msg.each do |m|
        response = response + content_tag(:p, m)  
      end
    end
    response += "</div>"
    flash.discard
    response
end
于 2013-01-11T04:50:39.667 に答える
0

通常、Ajax 応答はフラッシュ メッセージを利用しません。代わりに、json でエラーを探します。これで始められます...

http://travisjeffery.com/b/2012/04/rendering-errors-in-json-with-rails/

于 2013-01-11T05:30:58.653 に答える