【问题标题】:How can I send email to email contact in rails app form?如何在 Rails 应用程序表单中向电子邮件联系人发送电子邮件?
【发布时间】:2014-04-02 09:06:04
【问题描述】:

我想在我的应用程序中有一个表单,登录用户可以输入他们朋友的电子邮件地址,点击发送,它会自动向他们输入表单的电子邮件地址发送一封电子邮件。这是我到目前为止所拥有的。当我单击按钮将您带到表单时,我得到了未初始化的常量,所以我不知道还有什么不起作用。

invitations_controller.rb

class InvitationsController < ApplicationController
def new
    @invitation = Invitation.new
end

def create
     @invitation = Invitation.new(params[:invitation])
     @invitation.invited_by = current_user.invitation_token # set the sender to the current user
     if @invitation.save
      Mailer.invitation(@invitation, new_user_path(:invite_token =>  @invitation.invited_by)).deliver #send the invite data to our mailer to deliver the email
     else
      flash.now[:notice] = "Something went wrong"
      redirect_to root_url
     end
    end
   end

mailer.rb

class Mailer < ActionMailer::Base
 default from: "donotreply@mysite.com"

 def invitation(invitation, signup_url)
  subject    'Invitation'
  recipients @recipient_email
  from       'donotreply@mysite.com'
  body       :invitation => invitation, :signup_url => signup_url
  invitation.update_attribute(:sent_at, Time.now)
 end
end

invitation.html.erb

Mailer#invitation
You are invited to join our beta!

<%= signup_url(@invitation.invited_by) %>

new.html.erb(邀请表)

    <%= simple_form_for @invitation, :url => new_invitation_path do |f| %>
    <%= f.hidden_field :invitation_token, :value => @invitation.invited_by %>
    <%= f.label :email %>
    <%= f.email_field :email %>
    <%= f.submit 'Send' %>
    <% end %>

我什至无法进入邀请表单,因为我收到未初始化的常量错误。因此,据我所知,它的工作原理不止于此。请帮忙

【问题讨论】:

  • 哪个常量未初始化?
  • 未初始化的常量 InvitationsController::Invitation
  • 你有Invitation 模特吗?
  • 没有。我认为我需要一个评论?我为确认电子邮件制作了一封邮件,我开始工作了。我没有那个模型。但由于某种原因,接受用户输入并发送电子邮件对我来说比在用户注册时发送自动电子邮件更困难。
  • 当然你需要一张邀请表,你说Invitation.new ....意味着你正在初始化一个邀请对象

标签: ruby-on-rails ruby email ruby-on-rails-4 actionmailer


【解决方案1】:

你需要一个Invitation 模型。

rails generate model Invitation invited_by:string sent_at:timestamp

See the getting started guide

【讨论】:

  • 做到了。现在我在 new.html.erb 中得到了未定义的方法“email”
  • 您需要在Invitation 模型中添加一个email 字段
  • 好的,我可以转到表单所在的 /invitations/new 页面,输入电子邮件并单击提交。在控制台中,我得到“未经许可的参数:utf8、authenticity_token、邀请、提交”。这是我当前的代码gist.github.com/th3cuda/274f31bccf8df00593eb
  • 查看guides.rubyonrails.org/…中关于permit的部分
  • @user3443619 遵循教程或其他内容。这不是学习绝对基础知识的地方。
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多