Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RubyonRails中单击按钮之前,如何阻止flash错误消息显示在页面加载上?_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1_Rubygems - Fatal编程技术网

Ruby on rails 在RubyonRails中单击按钮之前,如何阻止flash错误消息显示在页面加载上?

Ruby on rails 在RubyonRails中单击按钮之前,如何阻止flash错误消息显示在页面加载上?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,rubygems,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Rubygems,我正在试图找到一种方法来阻止此flash消息在页面加载时显示: class SearchesController < ApplicationController def index @users = User.search params[:search] @default_image = "/assets/default_avatar.jpg" if @users.empty? || params[:search].blank? f

我正在试图找到一种方法来阻止此flash消息在页面加载时显示:

class SearchesController < ApplicationController

   def index

     @users = User.search params[:search]
     @default_image = "/assets/default_avatar.jpg"
     if @users.empty? || params[:search].blank? 
        flash[:error] = "Sorry no user(s) found!" if @users.empty?
        flash[:error] = "Please give us something to search for!" if params[:search].blank?
        render 'index'
     end    
   end
end
赤裸裸的在脑海里,那是在你得到编造之后

我肯定有人能回答这个问题

我在rails api中看到了after_commit,但没有任何示例说明如何在我的情况下使用它,或者即使它是我所需要的


Kind reards

我可以想到基于java脚本的解决方案(但不是rails)

  • 在dev中打印rails flash消息
  • 把德夫藏起来
  • 当用户单击搜索按钮时,只需使用java脚本 显示DIV
  • 我认为这符合您的要求,而且据我所知,rails不支持您的开箱即用要求


    HTH

    如果我理解正确,您可以通过GET请求(在本例中,您不需要flash消息)或填写了:search字段的POST表单来访问操作“索引”

    您可以使用
    request.POST?
    (也存在
    request.get?
    request.put?
    ,等等)检查您是否在POST请求中

    class SearchesController

    我删除了
    呈现“索引”
    ,我认为它没有用。

    一个简单的解决方案是在搜索表单中添加一个隐藏字段,并检查该值是否存在,而不是实际的搜索字符串

    看法


    没有为我工作。。使用get。当我访问页面时,仍然会显示Flash消息。这意味着您可以通过
    if request.post语句,这很奇怪。闪光信息可以设置在其他地方?我可以告诉你这一条会让我困扰一段时间。不知道发生了什么。我觉得这很有趣,这是一个非常简单的解决方案。你一定是个解决问题的高手。我使用了if参数[:search].blank?&&改为使用params[:search],这样,如果用户输入了一个不存在的用户,我的另一条flash消息就会显示出来。谢谢。很乐意帮忙!我实际上认为我有一个更简单的解决方案,不需要隐藏字段。。。您可以检查
    params[:search].nil?
    。如果请求不是通过搜索表单发出的,并且
    params[:search].blank?&&,则应为真!params[:search].nil?
    对于空搜索是真的。这很有效。甚至更好。最初我确实尝试了params[:search].nil?但我没想到会像你刚才那样利用这一结果为你带来好处。这个解决方案更好,因为我不需要隐藏字段。
    flash[:error] = "Please give us something to search for!" if params[:search].blank? after_get 
    
    class SearchesController < ApplicationController
    
      def index       
        @default_image = "/assets/default_avatar.jpg"
        if request.post? 
           @users = User.search params[:search]
           if @users.empty? || params[:search].blank? 
             flash[:error] = "Sorry no user(s) found!" if @users.empty?
             flash[:error] = "Please give us something to search for!" if params[:search].blank? 
           end
        end    
      end
    end
    
    <%= hidden_field_tag :searching, true %>
    
    flash[:error] = "Please give us something to search for!" if params[:searching]