2015-06-03 4 views
3

Я работаю на строительство мой почтовик, но я держать работает в:рубин Mailer: Неверное количество аргументов

wrong number of arguments (0 for 1)

Назови мое с ума, но я чувствую, что я определил все правильно:

контроллер (усечены для краткости):

def create 
@cms484 = Cms484.new(cms484_params) 

respond_to do |format| 
    if @cms484.save 
    SendLink.message(@cms484).deliver_later 
    format.html { redirect_to cms484s_path, notice: 'Cms484 was successfully created.' } 
    format.json { render :show, status: :created, location: @cms484 } 
    else 
    format.html { render :new } 
    format.json { render json: @cms484.errors, status: :unprocessable_entity } 
    end 
end 

SendLink.rb:

class SendLink < ApplicationMailer 
    def message(cms484) 
    @cms484 = cms484 
    mail(
     :subject => 'Hello from Postmark', 
     :to => @cms484.recipient , 
     :from => '[email protected]', 
     :html_body => '<strong>Hello</strong> user!.', 
    end 
end 

Может ли кто-нибудь еще увидеть иглу в стоге сена или я вообще что-то пропустил?

Я использую Postmark для доставки, если это имеет значение, и эти параметры определены в файле application.rb в соответствии с документацией. Думайте, что это более простой вопрос.

Редактировать Полная ошибка:

Completed 500 Internal Server Error in 76ms 

ArgumentError (wrong number of arguments (0 for 1)): 
    app/mailers/send_link.rb:2:in `message' 
    app/mailers/send_link.rb:4:in `message' 
    app/controllers/cms484s_controller.rb:38:in `block in create' 
    app/controllers/cms484s_controller.rb:36:in `create' 
+0

Вы помещаете запятую вместо закрывающей скобки для функции 'mail' в' SendLink.rb' –

+0

Выбрал это после публикации, не уверен, что я там сделал, но не решил проблему. Спасибо за головы, хотя. – PSCampbell

ответ

0

Хорошо, так что я решил переписать его, и вот - оно работает. Почему или что отличается от предыдущей версии (кроме метода электронной почты и почты, конечно, это не может быть?), Я понятия не имею. Если вы можете видеть, что это такое, Пожалуйста, назовите это для меня!

Send_link.rb:

class SendLink < ApplicationMailer 



def email(cms484) 
    @cms484 = cms484 
    mail(
    :subject => 'Hello from Postmark', 
    :to => @cms484.recipient , 
    :from => '[email protected]', 
) 
    end 
end 

Контроллер:

def create 
@cms484 = Cms484.new(cms484_params) 

respond_to do |format| 
    if @cms484.save 
    SendLink.email(@cms484).deliver_later 

    format.html { redirect_to cms484s_path, notice: 'Cms484 was successfully created.' } 
    format.json { render :show, status: :created, location: @cms484 } 
    else 
    format.html { render :new } 
    format.json { render json: @cms484.errors, status: :unprocessable_entity } 
    end 
end 

конец

0

mail ... линия SendLink.rb выглядит неправильно, измените его на,

mail(
    :subject => 'Hello from Postmark', 
    :to => @cms484.recipient , 
    :from => '[email protected]', 
    :html_body => '<strong>Hello</strong> user!.') 
+0

Я не вижу никакой разницы в том, что я разместил, и о вашем предположении? Скопированное и вставленное предложение просто для того, чтобы быть уверенным и по-прежнему видеть то же 0 за 1 ошибку. – PSCampbell

+0

Проблема с синтаксисом, checkout ', and)'. Но я думаю, что это не решило вашу проблему, как упоминалось в комментариях к вопросу. Так что продолжайте. –

2

У меня была аналогичная проблема, когда я назвал свой метод "сообщение" ActionMailer оказывается, что это был зарезервированный слова в Rails и забросил ошибку.

Я бы предположил, что «почта» была зарезервированным словом, где «электронная почта» не была.

Смежные вопросы