我的控制面板上有一个链接这个链接,调用我的控制器的一个动作。
<%= 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 Image Link
你需要编写javascript来显示点击链接时的图像
和隐藏图像加载完成。
这个问题对你有用吗
答案链接
你必须输入你的链接
:remote => true
进行Ajax调用。
Rails将转到"email_all_users"。在这里,你必须退出"redirect_to"语句。
在你的视图中,你必须放置一个"JS"视图文件,如"email_all_users.js"。,在这里你可以编写必要的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()
});