2015-06-23 45 views
-1

我试图将参数(useremail,costprojects)从一个控制器动作传递到另一个控制器动作。Rails 3.2将参数从一个控制器动作传递到另一个

这里是控制器代码:

def pdfemail 
    costprojects = Costproject.find(params[:costproject_ids]) 
    useremail = current_user.email 
    CostprojectsController.delay.pdfemail2(params: { useremail: useremail, costprojects: costprojects }) 
    redirect_to :back 
    flash[:notice] = 'An Email containing a PDF has been sent to you!' 
    end 

    def self.pdfemail2 
    @useremail = params[:useremail] 
    @costprojects = params[:costprojects] 
    ... 

但是,我得到:

wrong number of arguments (1 for 0) 

延迟项目显示:

object: !ruby/class 'CostprojectsController' 
method_name: :pdfemail2 
args: 
- :params: 
    :useremail: [email protected] 
    :costprojects: 
    - !ruby/ActiveRecord:Costproject 
     attributes: 
     id: 8 
... 

感谢您的帮助!

回答

0

如果你想通过一些PARAMS同时重定向到另一个动作,使用的ActionController ::参数:

def search 
    redirect_to :index, params: { query: params[:q] } 
end 

http://api.rubyonrails.org/classes/ActionController/Base.html

+0

尤里,看到我UPDATE1 - 谢谢。 – Reddirt

+1

不,这些行为不能像那样工作,它们不是直接被调用的。如果你需要一些逻辑,发送电子邮件,并且你想在后台运行它,然后创建一个工作。 –

相关问题