2013-04-21 6 views
0
class Customers < ActiveRecord::Base 
    def check_user_name 
    ... 
    mailto = Emailer.new 
    mailto.contact(email, subject='ask', question) 
    end 
end 

class Emailer < ActionMailer::Base 
    def contact(email, subject, question, sent_at = Time.now) 
    ... 
    end 
end 

CONTROLLER:Как использовать метод из другого класса?

class CustomersController < ApplicationController 
    def ask  
    end 

    def check_user  
    cust = Customers.new 
    @answer = cust.check_user_name(params[:name], params[:email], params[:question])  
    end 

end 

эта ошибка:

NoMethodError in CustomersController#check_user

+0

Где код для контроллера? – Dogbert

+0

Является ли ваш метод «контакт» общедоступным? И почему вы передаете странные параметры, такие как 'subject = 'ask''? –

+0

о теме = 'ask' - это просто пример. Как узнать, является ли метод общедоступным? :) –

ответ

0

вы передаете параметр в методе и метод, который вы определили в модели не имеет параметра принимающую. Вы должны сделать следующее:

class Customers < ActiveRecord::Base 
    def check_user_name(name,email,question) 
    mailto = Emailer.new 
    mailto.contact(email, subject='ask', question) 
    end 
end 

class Emailer < ActionMailer::Base 
    def contact(email, subject, question, sent_at = Time.now) 
    end 
end 

Надежда выше даст вам идею и поможет вам.

+0

все еще есть ошибка: частный метод 'new ', вызываемый для Emailer: Class –

+2

вы не можете создать объект почтовой программы. вы можете напрямую вызвать метод класса Mailer. Пройдите через: RailsGuid-> http://guides.rubyonrails.org/action_mailer_basics.html и RailsCast-> http://railscasts.com/episodes/206-action-mailer-in-rails-3 –

+0

ok. Я запускаю эту команду: rails создает почтовый пользователь UserMailer. тогда сделайте мой код там. и никакой ошибки ... что-то в порядке ... но почта не была отправлена ​​... я думаю, тах, потому что я пытаюсь отправить почту с локального сервера. –

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