Rails - Mail_form, как автоматически установить из поля адрес электронной почты текущего_пользователя

Я следовал этому руководству https://rubyonrailshelp.wordpress.com/2014/01/08/rails-4-simple-form-and-mail-form-to-make-contact-form/

В контактной форме пользователь заполняет поле для своего имени и электронной почты вместе с сообщением.

class ContactForm < MailForm::Base

  attribute :name,      :validate => true
  attribute :email,     :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
  attribute :message
  attribute :nickname,  :captcha  => true

  # Declare the e-mail headers. It accepts anything the mail method
  # in ActionMailer accepts.
  def headers
    {
      :subject => "My Contact Form",
      :to => "[email protected]",
      :from => %("#{name}" <#{email}>)
    }
  end
end

Я хочу автоматически отправлять из атрибута user.email и не заполнять поле пользователем. Это возможно?


person user4584963    schedule 12.08.2016    source источник


Ответы (1)


Попробуй это:

В вашем app/views/contacts/new.html.erb сделайте email field как hidden field и используйте current_user.email как value из hidden email field должно работать.

Примечание. Я предполагаю, что вы используете Devise gem

person Hasmukh Rathod    schedule 12.08.2016
comment
Я использую Devise, но получаю это сообщение undefined local variable or method current_user' для ContactForm:Class` - person user4584963; 13.08.2016
comment
Да, моя ошибка. Мы не можем использовать метод current_user в модели. Вместо этого в «app/views/contacts/new.html.erb» сделайте поле электронной почты скрытым и используйте current_user.email, поскольку значение скрытого поля электронной почты должно работать. - person Hasmukh Rathod; 13.08.2016