메일러를 구현해야하므로 간단한 양식을 작성하려고합니다.ActionMailer 및 ActiveModel
class ContactusController < ApplicationController
def index
@contact_us = Contactus.new
end
def new
redirect_to(action: 'index')
end
def create
@contact_us = Contactus.new(params[:contactus])
if @contact_us.deliver
flash[:notice] = "Thank-you, We will contact you shortly."
else
flash[:error] = "Oops!!! Something went wrong. Your mail was not sent."
end
render :index
end
end
내가 ActiveModel를 사용하여 데이터를 저장하지 않기 때문에 :
class Contactus
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Validations
include ActionView::Helpers::TextHelper
attr_accessor :name, :email, :message
validate :name,
:presence => true
validates :email,
:format => { :with => /\b[A-Z0-9._%a-z\-][email protected](?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}\z/ }
validates :message,
:length => { :minimum => 10, :maximum => 1000 }
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def deliver
return false unless valid?
mail(
:to => "[email protected]",
:from => %("#{name}" <#{email}>),
:reply_to => email,
:subject => "Website inquiry",
:body => message,
:html_body => simple_format(message)
)
true
end
def persisted?
false
end
end
모든 것이 잘 작동
나는 컨트롤러를 만들었습니다. 라우팅은 좋은, 유효성 검사가 작동하지만 내가 할 수있는 유일한 오류는 다음과 같습니다undefined method mail for #<Contactus:0x007f9da67173e8>
내가 이름 CONTACTUS하고 있다는 점에서 사용자 모델 코드 메일러를 만들려고하지만, 내가 다음과 같은 오류 있어요 : private method new used
을 ActiveModel에서 ActionMailer 기능을 사용하려면 어떻게해야합니까?
나는 새로운 작업 문제에 관해서는 확실히 시도 할 것입니다. 메일러 클래스의 객체를 만들고 있지만 실제로는 construtor가 없습니다. 거기에 문제가 있었다 : –
그랬 으면 좋겠다;) –
지금은 좀 앞으로지만, 지금은 매우 이상한 errro Net :: SMTPAuthenticationError 비록 내가 enviornment.rb 어떤 실마리에 ActionMailer :: Base.smtp_settings에 옳은 것들을 입력했지만 그거에 대해서 –