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 或其他方式)。

以下代码将为您提供一个示例(这是我的实际工作代码之一)

例如:添加一个新朋友

#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 回答