【发布时间】:2018-03-20 12:55:14
【问题描述】:
我有一个 Rails web application 正在构建中,它的表单是用纯 HTML 完成的。
我在连接表单时遇到困难,以便应用程序使用 Sendgrid 将提交的字段通过电子邮件发送给我。
当我点击表单上的提交按钮时,我得到 No route matches [POST] "/"
我已经按照这个tutorial 并按时间顺序执行了这些说明,但我仍然有麻烦。任何有关代码的指导或帮助将不胜感激。
config/environments/production.rb:
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com',
:enable_startstls_auto => true
}
index.html.erb
<form method="post" name="frmContentDownload"><!-- /. form handling starts here-->
<div>
<label for="FirstName1">First Name</label><input class="form-control" name="FirstName1" type="text" value="" />
</div>
<div>
<label for="LastName1">Last Name</label><input class="form-control" name="LastName1" type="text" value="" />
</div>
<div>
<label for="emailAddress">Email</label><input class="form-control" name="emailAddress" type="text" value="" />
</div>
<div>
<label for="PhoneNumber">Phone</label><input class="form-control" name="PhoneNumber" type="text" value="" />
</div>
<div>
<label for="Title1">Title</label><input class="form-control" name="Title1" type="text" value="" />
</div>
<!-- /. this is the drop down box for the states-->
<div><label for="StateProvince1">State or Province</label><select class="form-control" name="StateProvince1">
<option class="placeholder" value="" disabled selected>COUNTRY ↡</option>
<option value="CA">Canada</option>
<option value="UK">United Kingdom</option>
<option value="US">United States</option>
</select></div>
<div>
<label for="comments">Comments</label><input class="form-control" name="comments" type="text" value="" />
</div>
<div>
<input class="btn btn-primary btn-lg btn-block" type="submit" value="Contact Us" />
</div>
</form>
message.rb
class Message < ApplicationRecord
include ActiveModel::Model
include ActiveModel::Conversion
include ActiveModel::Validations
attr_accessor :FirstName1, :LastName1, :emailAddress, :PhoneNumber, :Title1, :StateProvince1, :comments
validates :FirstName1,
presence: true
validates :LastName1,
presence: true
validates :emailAddress,
presence: true
validates :PhoneNumber,
presence: true
validates :Title1,
presence: true
validates :StateProvince1,
presence: true
validates :comments,
presence: true
end
邮件类
class ContactMailer < ApplicationMailer
default from: 'notifications@example.com'
default to: 'chrisdorman1978@gmail.com'
def welcome_email(user)
@user = user
@url = 'http://example.com/login'
mail(to: @user.email, subject: 'Thank you for the enquiry, Gastromend will be in touch')
end
def new_message(message)
@message = message
mail subject: "Message from #{message.name}"
end
end
控制器
class MessagesController < ApplicationController
def new
@message = Message.new
end
def create
@message = Message.new(message_params)
if @message.valid?
ContactMailer.new_message(@message).deliver
redirect_to contact_path, notice: "Your messages has been sent."
else
flash[:alert] = "An error occurred while delivering this message."
render :new
end
end
private
def message_params
params.require(:message).permit(:FirstName1, :LastName1, :emailAddress, :PhoneNumber, :Title1, :StateProvince1, :comments)
end
end
routes.rb
Rails.application.routes.draw do
root :to => "pages#index"
get 'pages/index'
get 'contact', to: 'messages#new', as: 'contact'
post 'contact', to: 'messages#create'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
new_message.text.erb
<%= @message.name %> <<%= @message.email %>> wrote:
<%= @message.content %>
【问题讨论】:
标签: html ruby-on-rails forms sendgrid