1

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

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

提前致谢。

4

2 回答 2

0

Generate loader image from Link

Ajax Image Link

you need to write javascript to show the image on clicking the link

and hide image on load complete.

May this question work for you

Link of answer

于 2013-01-13T16:12:55.663 回答
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()
});
于 2013-01-13T16:20:09.253 回答