小编geb*_*011的帖子

如何使用delayed_job使Rails 3.0 ActionMailer异步运行?遇到ArgumentErrors

我正在尝试延迟在注册我的应用程序时发送给用户的通知电子邮件.电子邮件是使用ActionMailer我打电话发送的InitMailer.我试图推迟工作的方式是使用collectiveidea的delayed_job https://github.com/collectiveidea/delayed_job.为此,您可以看到我handle_asynchronously在定义方法后指定initial_email:

class InitMailer < ActionMailer::Base
  default :from => "info@blahblahblah.com"

  def initial_email(user)
    @user = user
    @url = "http://www.blahblahblah.com"
    mail(:to => user.email,
         :subject => "Welcome to my website!"
         ) 
  end

  handle_asynchronously :initial_email
end
Run Code Online (Sandbox Code Playgroud)

但是,我在日志文件中遇到参数错误"delayed_job.log":

Class#initial_email failed with ArgumentError: wrong number of arguments (1 for 0) - 5 
failed attempts
Run Code Online (Sandbox Code Playgroud)

为了您的信息,电子邮件使用以下行在控制器中发送:

@user = InitUser.new(params[:init_user])
InitMailer.delay.initial_email(@user)
Run Code Online (Sandbox Code Playgroud)

此外,当我设置我的代码没有延迟时,电子邮件发送没有问题(除了它减慢我的应用程序等待gmail服务器的事实)

这里导致错误的地方在哪里?如何才能正确发送延迟邮件?

ruby-on-rails actionmailer delayed-job argument-error

10
推荐指数
1
解决办法
4586
查看次数

在Google Spreadsheets中使用COUNTA功能时,是否可以将默认值设置为零?

我在Google电子表格中使用了一个数据透视表,用于计算给定日期不同类型事件类型的出现次数.事件列在一张纸上,其中"Date"列和"Type"列.基于此,生成了数据透视表.

麻烦的是,对于不存在事件类型的日期,COUNTA返回空.我宁愿它返回0.

原因在于图表和统计目的,当您从此数据创建图表时,它会在值之间进行插值,忽略空单元格.我希望在这些事件类型不存在的日子里它在图表上显示为零...

这可能吗?

google-sheets array-formulas google-sheets-formula

6
推荐指数
1
解决办法
2549
查看次数

如何为Kaminari指定Ajax分页的控制器和动作?

我正在使用Kaminari宝石作为我的ruby on rails应用程序(对于仍然使用will_paginate的任何人,我建议考虑切换!更清洁,更通用).

我遇到的问题是我想在进行AJAX分页时指定一个控制器动作,即.让我的分页远程工作,如下:

 <%= paginate @feeds, :param_name => :page, :remote => true%>
Run Code Online (Sandbox Code Playgroud)

默认情况下,当我设置:remote => true,并将以下行添加到我的"pages"控制器home.js.erb文件时,它可以在我的主页上工作.我甚至不需要指定哪个js部分引用; 它会自动选择.

  $('.synopsis').html('<%= escape_javascript render('exchanges/synopsis', :feeds => @feeds)%>');
  $('.paginator').html('<%= escape_javascript(paginate(@feeds, :param_name => :page, :remote => true).to_s)%>')
Run Code Online (Sandbox Code Playgroud)

但问题是这个"概要"div是我在我的应用程序中的许多不同页面上呈现的部分.因此,在控制器不是我的"页面"控制器的页面上,远程分页不再起作用.

一种解决方案是将这两行添加到我的许多不同控制器中的js.erb文件中.但那将是多余的和不优雅的.

我希望能够在"paginate"调用中指定哪个控制器以及用于远程调用的操作.然后我想我会写一个动作,如:

 def paginate_remotely
     respond_to paginate_remotely.js
 end
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?这似乎是一个简单的问题,但我无法弄明白.以下肯定不起作用:

 <%= paginate @feed_exchanges, :param_name => :exchange_page, :remote => true, :controller => :exchanges, :action => :paginate_remotely %>
Run Code Online (Sandbox Code Playgroud)

ajax ruby-on-rails-3 kaminari

3
推荐指数
1
解决办法
2177
查看次数