0

铁轨新手!!!如何让我的“发送”按钮调用发送电子邮件的功能(sendmail)?这就是我到目前为止所拥有的...... events_controller 中的 sendmail 没有调用!我的模型中有一个事件,我正在运行 rails 3.2.3

显示.html.erb:

<p><b>Send Results</b></p>
<%= form_tag("/events", :method => "get") do %>
<p><label for="email_recipient">Email recipient</label>:
<%= text_field 'email', 'Email recipient' %></p>
<%= submit_tag "Send" %>
<% end %>

路线.rb:

resources :events do
      member do 
          get '/sendmail', :as => :sendmail
      end
  end

events_controller.rb

   def sendmail
        puts "sendmail"
        Emailer.deliver_results_email
        return if request.xhr?
        render :text => 'Message sent successfully'
  end

电子邮件程序.rb

class Emailer < ActionMailer::Base
  #default from: "from@example.com"
  def results_email
    puts "RESULTS EMAIL"
    #NEVER GETS THIS FAR.....
  end
end
4

1 回答 1

0

第一件事。在你的routes.rb你已经把sendmail动作放在一个member块内。这将生成这样的路线:

/events/:id/sendmail

如果 sendmail 操作有点通用并且不需要应用于单个“事件”,也许你应该把它放在一个collection块上,所以你的路线是这样的:

/events/sendmail

其次,如果你rake routes | grep sendmail在控制台中运行,你会得到类似这样的输出:

sendmail_event GET /events/:id/sendmail events#sendmail

这行的意思是您配置了一个路由,并且您有一个名为的辅助路由方法sendmail_event_path,您可以使用它来帮助理解您的视图等。所以在您的视图中,它会是这样的:

<%= form_tag sendmail_event_path(@event.id) %>
  ...
<% end %>

当您单击提交按钮时,表单将POSTED发送到您的events_controller.

我建议您将路线更改为 a collection,然后更改为:post,这样您就可以在没有事件的情况下使用它。

于 2012-08-01T12:12:57.393 回答