执行操作时显示加载图像

时间:2013-01-13 15:25:43

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

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

<%= 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。所以我需要一些帮助。

提前致谢。

2 个答案:

答案 0 :(得分:0)

从链接

生成加载程序图像

Ajax Image Link

您需要编写javascript以在点击链接时显示图片

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

愿这个问题适合你

Link of answer

答案 1 :(得分:0)

您必须输入链接

: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()
});