【问题标题】:Show loading image while performing an action在执行操作时显示加载图像
【发布时间】:2013-01-13 15:25:42
【问题描述】:

我的控制面板上有一个链接 这个链接,调用我的控制器的一个动作。

<%= link_to "Enviar Correos".html_safe, {:controller => "users", :action => "email_all_users"}, :method => "get", :html =>  {:style => "color:#FAA732;" } %>

动作:

def email_all_users
    User.all.each do |u|
        if !u.information.nil?
            if !u.information.business
                UserMailer.candidate_email(u).deliver
            else 
                    UserMailer.business_email(u).deliver
            end
        else
                UserMailer.no_info_email(u).deliver
        end
    end
    redirect_to "/users/#{current_user.id}",  :flash => { :success => "Los correos fueron enviados" }
  end

一切都很好,但它需要很多时间,所以点击链接后我想更改加载图像的链接,然后(当动作完成时),我想显示另一个图像(完成!) 然后显示链接。

我从未使用过 ajax。所以我需要一些帮助。

提前致谢。

【问题讨论】:

标签: ajax ruby-on-rails-3 jquery ruby-on-rails-3.2


【解决方案1】:

从链接生成加载器图像

Ajax Image Link

您需要编写 javascript 以在单击链接时显示图像

并在加载完成时隐藏图像。

希望这个问题对你有用

Link of answer

【讨论】:

    【解决方案2】:

    你必须输入你的链接

    :remote =>  true
    

    进行 Ajax 调用。

    Rails 将转到“email_all_users”。在这里您将不得不退出“redirect_to”语句。

    您必须在您的视图中放置一个“JS”视图文件,例如“email_all_users.js.erb”,在这里您可以编写必要的 javascript 来显示信息“Los correos fueron enviados”。

    要显示加载图像,例如 jQuery,你可以这样写:

    $('body').ajaxStart(function() {
        $('body>*:not(:hidden)').fadeTo(0, 0.5)
        $(this).append('<img id="ajax_loader" src="/images/loading.gif">')
    });
    $('body').ajaxComplete(function() {
        $('body>*:not(:hidden)').fadeTo(0, 1)
        $('#ajax_loader').remove()
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多