Rails почтовик + sendmail из моделей - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть модель, к которой прикреплены некоторые файлы. В действии show у меня есть ссылка, чтобы открыть диалоговое окно с формой.

Эта форма предназначена для отправки электронной почты с вложенными файлами от родительских моделей, а также с некоторыми сведениями о модели.

Я создал генератор:

rails g mailer notifier
rails g resource emailsystem

На данный момент у меня есть div в шоу

<div id="dialog" style="display:none">
  <%= form_for ???? do |f| %>
      <%= f.text_field :fromemail %>
  <% end %>
</div>

Но я не знаю, с какой моделью мне нужно прикрепить эту форму, потому что форма не нуждается в БД. Я создал новый ресурс, но при его использовании я получаю сообщение об ошибке, поскольку таблица ресурсов не существует.

Как я могу это сделать? Я думаю, что мне нужно прикрепить диалоговую форму с текущей моделью.

РЕДАКТИРОВАТЬ ------------

Теперь я создал свою форму, а также контроллер и почтовые + модели

mailer + models 

mailer
def plan_notification(resource)
   @plans = resource
   mail(:to => "maskedemail",
      :from => 'maskedemail',
      :subject => 'test')
end

model
def save
    Emailplan.plan_notification(self).deliver!
end

and my controller

def send

  puts 'test'
  @emailplan = Emailplan.save(params[:emailplan])
end


my routes.rb

match 'emailplans/send' => 'emailplans#send', :as => :send_emailplan

my form

<%= form_for @emailplan, :as => :emailplans, :url => send_emailplan_path do |e| %>
    <div>To : <%= e.text_field 'toemail' %></div>
    <div>From : <%= e.text_field 'fromemail' %></div>
    <div>Note : </div>
    <div><%= e.text_area 'note', :rows => 5 %></div>
    <div><%= e.submit 'Send plans' %></div>
<% end %>

но при всем этом я получаю эту ошибку:

Parameters: {"commit"=>"Send plans", "authenticity_token"=>"12dR2T8IOSoKktQEHxthP8v5bxTuPBzwnoWz9lTgim0=", "utf8"=>"✓", "emailplans"=>{"fromemail"=>"maskedemail", "toemail"=>"maskedemail", "note"=>"23423423"}}
Completed 500 Internal Server Error in 0ms

ArgumentError (wrong number of arguments (2 for 0)):

Почему у меня неверное количество аргументов? Где я могу установить количество аргументов для моей модели / контроллера?

Спасибо.

1 Ответ

0 голосов
/ 02 сентября 2011

Короткий ответ - использовать form_tag вместо form_for. Итак:

<%= form_tag '/url/to/controller/that/sends/mail/goes/here' do |f| %>
  <%= f.text_field 'fromemail' %>
  <%= f.submit 'Send email' %>
<%= end %>

Более длинный ответ: вы можете прочитать один или два учебника по actionmailer - я подозреваю, что вы можете быть немного озадачены тем, как почта работает в rails (?); -)

Документация здесь: http://api.rubyonrails.org/classes/ActionMailer/Base.html

или, если хотите, RailsCast: http://railscasts.com/episodes/206-action-mailer-in-rails-3

...