Ruby on rails create方法的Rails邮件表单问题
通过本教程,我创建了一个应用程序,它使用mail_表单在rails中发送电子邮件。然后我想在我的应用程序中使用它。不幸的是,它不起作用。我注意到教程使用了create(由HomeController处理#create as JS)方法,而我的应用程序使用了index(由StaticsController处理#index as JS)方法。我将其从控件中删除,但没有导致错误。如何指向create方法?Ruby on rails create方法的Rails邮件表单问题,ruby-on-rails,ruby,mail-form,Ruby On Rails,Ruby,Mail Form,通过本教程,我创建了一个应用程序,它使用mail_表单在rails中发送电子邮件。然后我想在我的应用程序中使用它。不幸的是,它不起作用。我注意到教程使用了create(由HomeController处理#create as JS)方法,而我的应用程序使用了index(由StaticsController处理#index as JS)方法。我将其从控件中删除,但没有导致错误。如何指向create方法? statics\u controller.rb class StaticsController
statics\u controller.rb
class StaticsController < ApplicationController
def contact
@contact = Statics.new(params[:statics])
end
def create
@contact = Statics.new(params[:statics])
@contact.request = request
if @contact.deliver
@contact = Statics.new
end
end
end
Rails.application.routes.draw do
get 'statics/index'
get 'statics/contact'
root "statics#index"
resources :pages
match ':controller(/:id(/:action))', :via=>[:get,:post]
resources :statics, only: [:contact, :new, :create]
end
class Statics < MailForm::Base
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :message
# Declare the e-mail headers. It accepts anything the mail method
# in ActionMailer accepts.
def headers
{
:subject => "Your message has been sent.",
:to => "kontakt@przemyslawprzewoznik.pl",
:from => %("#{name}" <#{email}>)
}
end
end
<%= form_for @contact, url: statics_contact_path, remote: true do |f| %>
<div class="col-md-6">
<%= f.label :name %></br>
<%= f.text_field :name, required: true %></br>
<%= f.label :email %></br>
<%= f.text_field :email, required: true %></br>
<%= f.label :message %></br>
<%= f.text_field :message, required: true %></br>
<%= f.submit "Wyślij", class: "btn btn-primary"%>
</div>
<% end %>
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors= true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'gmail.com',
user_name: ENV["GMAIL_EMAIL"],
password: ENV["GMAIL_PASSWORD"],
authentication: 'plain',
enable_starttls_auto: true }
模型静力学.rb
class StaticsController < ApplicationController
def contact
@contact = Statics.new(params[:statics])
end
def create
@contact = Statics.new(params[:statics])
@contact.request = request
if @contact.deliver
@contact = Statics.new
end
end
end
Rails.application.routes.draw do
get 'statics/index'
get 'statics/contact'
root "statics#index"
resources :pages
match ':controller(/:id(/:action))', :via=>[:get,:post]
resources :statics, only: [:contact, :new, :create]
end
class Statics < MailForm::Base
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :message
# Declare the e-mail headers. It accepts anything the mail method
# in ActionMailer accepts.
def headers
{
:subject => "Your message has been sent.",
:to => "kontakt@przemyslawprzewoznik.pl",
:from => %("#{name}" <#{email}>)
}
end
end
<%= form_for @contact, url: statics_contact_path, remote: true do |f| %>
<div class="col-md-6">
<%= f.label :name %></br>
<%= f.text_field :name, required: true %></br>
<%= f.label :email %></br>
<%= f.text_field :email, required: true %></br>
<%= f.label :message %></br>
<%= f.text_field :message, required: true %></br>
<%= f.submit "Wyślij", class: "btn btn-primary"%>
</div>
<% end %>
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors= true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'gmail.com',
user_name: ENV["GMAIL_EMAIL"],
password: ENV["GMAIL_PASSWORD"],
authentication: 'plain',
enable_starttls_auto: true }