如何在Rails控制器中定义一个名为send的方法?

时间:2014-09-01 17:52:56

标签: ruby-on-rails

我正在尝试在我的控制器中定义方法send

class InvoicesController < ApplicationController

  def send
  end

end

但是,当我这样做时,我收到错误wrong number of arguments (2 for 0)

所以我假设send是Rails中的保留字?

无论如何,在我的控制器中定义send方法可能是一种可能的解决方法。

感谢任何想法。

3 个答案:

答案 0 :(得分:1)

您无法调用方法&#39;发送&#39;在红宝石。发送是一种对象方法

发送(* args)public

  

调用符号标识的方法,传递它   指定的任何参数。如果名称发送冲突,您可以使用发送   使用obj中的现有方法

Send method

答案 1 :(得分:0)

您在控制器中无法使用send方法的原因是send已经是ruby Object类的方法。

然而,从稍微不同的角度来看问题,在这种情况下我可以看到为方法指定特定名称的主要原因是在路由中获取该名称,以便您可以拥有,例如:{{ 1}}或RESTful资源http://localhost:3000/invoices/send

在这种情况下,您可以随意调用该方法,并添加一个名为/invoices/123/send的路径来指向您的方法。

所以,在你的控制器中:

send

然后在class InvoicesController < ApplicationController def send_invoice ... end end

config/routes.rb

或者对于发票资源:

get 'invoices/send', to: 'invoices#send_invoice'

答案 2 :(得分:0)

我会考虑将其称为Heroku local:run node index.jspost而不是