- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在按照 Hartl 的教程学习 Rails,并对它进行自己的调整。现在,我想扩展它并添加一个发送电子邮件的联系表单。本教程中不包含此类内容,但在第 10 章结束时,我们学会了使用邮件程序方法,并且我们已经在 Heroku 上配置了 SendGrid。
我已经在 route 设置了 View ,并认为它需要以下额外步骤:
1) 终端。 rails 生成邮件 ContactForm
2) 在 app/mailers/contactform.rb 中:
def send_contactform_email(visitor)
@visitor = visitor
mail( :to => myemail@example.com, :from => visitor.email, :subject => 'Contact form' )
end
<h1>Website contact form</h1>
<p>On <$= ... %> <%= "#{@visitor.name} (#{@visitor.email} sent the following message:" %></p>
<p><%= @visitor.message %></p>
# Sends contact form email.
def send_contact_form_email
ContactFormMailer.send_contactform_email(visitor).deliver_now
redirect_to contact_path, notice: 'Message sent'
end
<%= form_for(:static_pages, url: contactform_path) do |f| %>
<i class="pt-row-icon glyphicon glyphicon-user"></i> <%= f.label :name %>
<%= f.text_field :name, placeholder: 'Name', class: 'form-control' %>
<i class="pt-row-icon glyphicon glyphicon-envelope"></i> <%= f.label :email %>
<%= f.email_field :email, placeholder: 'Email', class: 'form-control' %>
<i class="pt-row-icon glyphicon glyphicon-envelope"></i> <%= f.label :message %>
<%= f.text_area :message, placeholder: 'Your message…', class: 'form-control' %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>
def contact
设置@message 变量。 class StaticPagesController < ApplicationController
before_action :valid_email?, only: [:send_message_email]
# Shows the contact form page
def contact
@message = message(message_params)
end
# Sends the message.
def send_message_email
@message = message(message_params)
if @message.valid?
MessageMailer.new_message(@message).deliver_now
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).require(:name, :email, :content)
end
def valid_email?(email)
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
email.present? && (email =~ VALID_EMAIL_REGEX)
end
end
<%= form_for(message: params[:message], url: contact_path) do |f| %>
<%= f.label :name %> <%= f.text_field :name, placeholder: 'Name', class: 'form-control' %>
<%= f.label :email %> <%= f.email_field :email, placeholder: 'Email', class: 'form-control' %>
<%= f.label :content %> <%= f.text_area :content, placeholder: 'Your message…', class: 'form-control' %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>
get 'contact' => 'static_pages#contact', as: 'contact'
post 'contact' => 'static_pages#send_message_email'
<%= @message[:name] %> <%= @message[:email] %> wrote:
<%= @message[:content] %>
class MessageMailer < ApplicationMailer
default to: "myemail@example.com>"
def new_message(message)
@message = message
mail to: "myemail@example.com"
mail from: @message[:email]
mail subject: "Message from #{message[:name]}"
end
end
param is missing or the value is empty: message
.它指的是
params.require(:message).require(:name, :email, :content)
线。不知道我做错了什么。将其更改为
params.require(:message).permit(:name, :email, :content)
没什么区别。
最佳答案
4) app\controllers\static_pages_controller (or another location?)
def send_contact_form_email
ContactFormMailer.send_contactform_email(visitor).deliver_now
params
之外的内容。 hash(包含 GET 和 POST 请求的参数),并使用与表单相同的键(
form_for(:visitor ...
=>
params[:visitor]
(因此您想更改该
:static_pages
))。
<p>On <$= ... %> <%= "#{@visitor.name} (#{@visitor.email} sent the following message:" %></p>
@visitor.email
必须是
@visitor[:email]
邮件内。
params[:visitor]
将意味着人们可以将该字段留空。您可能想查看在 Rails 4 中添加的强参数(这本书似乎有些过时?)。
mail( :to => myemail@example.com, :from => visitor.email, :subject => 'Contact form' )
to
/
from
参数。您要发送
至 您的访客电子邮件,而不是来自它。
params.require(:message).require(:name, :email, :content)
:message
处于同一“级别” - 最上面的。您要使用
permit
:
params.require(:message) # require "namespace"
.permit(:name, :email, :content) # permit keys
@message = message(message_params)
message
在哪里功能定义?
mail to: "myemail@example.com"
mail from: @message[:email]
mail subject: "Message from #{message[:name]}"
mail
功能3次。
关于ruby-on-rails - 在 Hartl 的教程中添加联系表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685221/
我正在按照 Hartl 的教程学习 Rails,并对它进行自己的调整。现在,我想扩展它并添加一个发送电子邮件的联系表单。本教程中不包含此类内容,但在第 10 章结束时,我们学会了使用邮件程序方法,并且
这是我在使用 bundle exec rspec spec/requests/static_pages_spec.rb 时遇到的错误。 我已经包含了 gem 测试单元。 请帮助我,我是 Rails 的
我在尝试实现 Hartl 的 Ruby on Rails 教程中的示例应用程序时遇到了一个奇怪的问题。 当我删除微博时,会发生以下情况: 微博被删除。 用户也会被删除。 定向至“注册”页面。 只应该发
我正在学习 Michael Hartl 的优秀 Rails 教程,并且我正在努力了解种子用户的一个方面。我刚刚完成第 9 章,所以我有一个具有管理员权限的工作登录/注销/编辑/删除系统。作为本章的一部
我将表单部分用于创建微博,如 Listing 10.33 所示与 并按照指示更新相应的 View 文件。但是,我无法通过 Rspec 测试,因为我不断收到“未定义的局部变量或类的方法'对象'...”有
我是 Rails 的新手,但我在 hartls 教程的第 11 章中一直遇到问题,目前是 给 Missing partial microposts/_micropost with {:locale=>
阅读 Hartl 的教程,地址为 list 10.42 在 microposts Controller 中,我们有 def create @micropost = current_user
我已经完成了本教程,但自第 7 节制作注册表单以来,我在 CSS 渲染方面遇到了一些小问题。这就是我得到的: 它应该是这样的: 这是相关的 CSS: @mixin box_sizing { -mo
我刚刚完成了 Hartl 教程的第 8 章,但当我尝试运行测试时,不断出现错误。我收到 3 个相同的错误,该问题似乎源于用户登录测试,其中在固定装置集中(用户)中未找到固定装置 :michael。 这
对于我的测试失败的任何帮助,我将不胜感激。我是根据 Michael Hartl 教程做的,我几乎尝试了所有方法并阅读了很多相关内容,但仍然一无所知。坦克斯 我的测试: 描述“分页”做 before(:
我刚刚完成了 Hartl 教程的第 10 章,但我的 CSS 没有加载到 Heroku 中。 我试过运行 $heroku run bundle exec rake assets:precompile
我正在研究 Michael Hartl 的 Ruby on Rails 教程,我在第 9 章遇到了错误。 错误: 1) Error: UsersIndexTest#test_index_as_ad
我是 RoR 的新手,一直在努力完成 Hartl教程(很棒)。我已经成功地跟进了第 9 章(稍微调整了一下,因为我的最终目标不是制作微博站点)。那时,我决定要在我的应用程序中添加一个“记住我”复选框并
我正在关注 Michael Hartl 教程并在 Listing 10.14 之后,他说 There is one subtlety, though: on failed micropost subm
我以前使用过 Rails 并安装了其他版本。我目前正在尝试遵循 Hartl 的教程,他要求使用特定版本的 Rails 和特定的 gem。 当我尝试运行 rails _5.0.3_ new sample
我一直在关注 Ruby-on-Rails tutorial 中的练习由 M. Hartl 着。我已经完成了第 4 章中的所有练习,但仍停留在这一章上: Create three hashes call
我似乎左右都遇到了失败...我检查了我的代码,一切都已定义并且拼写检查正在检查...这是我的失败...: Failures: 1) User pages index should list eac
我正在写关于我在完成 Michael Hartl 的 Ruby on Rails 教程时遇到的问题。问题是 css 不会更改用于密码确认的输入字段的外观。所有其他输入字段的外观都受 css 规则的影响
我正在编写 Michael Hartl 的教程。我在第 6 章。我要进行用户验证。下面的代码是我被告知要使用的代码,但它不起作用。我收到错误消息 syntax error, unexpected en
我一遍又一遍地检查代码,但我似乎找不到下拉菜单不起作用的原因。因此,我看不到下拉菜单中的链接是否正常工作。此外,标题现在切断了 。任何帮助是极大的赞赏。这是我的代码。 _header.html.erb
我是一名优秀的程序员,十分优秀!