Подтвердить контактную форму - PullRequest
0 голосов
/ 09 июля 2009

У меня есть простая контактная форма с темой и сообщением, которую я хочу проверить, чтобы предотвратить пустые электронные письма.

ActionMailer не поддерживает проверку. Где я должен поместить его (то есть в отдельную модель или непосредственно в контроллер)?

ОБНОВЛЕНИЕ: каков наилучший способ реализации валидации в модели, отличной от ActiveRecord?

Ответы [ 3 ]

1 голос
/ 18 июля 2011

В Rails 3 они отделили валидацию от ActiveRecord в ActiveModel. Поэтому, если вы используете Rails или по крайней мере имеете в своем проекте гем ActiveModel с компоновщиком или любым другим предпочитаемым вами методом, вы можете включить ActiveModel :: Validations в любой класс. Вот пример класса (обратите внимание, ActiveModel требует от меня Bundler):

class ContactUs::Contact
  include ActiveModel::Validations

  attr_accessor :email, :message

  validates :email,   :format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i },
                      :presence => true
  validates :message, :presence => true

  def initialize(attributes = {})
    attributes.each do |key, value|
      self.send("#{key}=", value)
    end
    @attributes = attributes
  end

  def read_attribute_for_validation(key)
    @attributes[key]
  end

  def save
    if self.valid?
      ContactUs::ContactMailer.contact_email(self).deliver
      return true
    end
    return false
  end
end

Пример взят из Contact Form Rails 3+ Engine, который я написал ContactUs , вы можете просмотреть код на Github, если у вас возникнут какие-либо другие проблемы с вашей реализацией, или использовать Gem, если он не слишком самоуверен для ваше заявление.

1 голос
/ 09 июля 2009

Помогает ли это кому-нибудь? http://forums.site5.com/showthread.php?t=18522

0 голосов
/ 09 июля 2009

Может быть, это поможет вам: http://activeform.rubyforge.org/

...