[英]How to send the value of the e-mail address with Ruby on Rails?
我有一个像下面这样的表单区域,如果你有一个电子邮件地址,我想要一个发送的 email 地址的值。 但我得到一个错误,没有价值。
我希望通过电子邮件发送电子邮件的价值。
nil:NilClass 的未定义方法“值”
Extracted source (around line #71):
rad_check = params[:emailaddress]
**data = RadCheck.find_by(emailaddress: params[:emailaddress]).value**
RadCheckMailer.rad_check_forgot(rad_check, data).deliver
rad_checks_controller.rb
def forgot
rad_check = params[:emailaddress]
data = RadCheck.find_by(emailaddress: params[:emailaddress]).value
RadCheckMailer.rad_check_forgot(rad_check, data).deliver
end
rad_check_mailer.rb
class RadCheckMailer < ApplicationMailer
default :from => "test@domain.com"
def rad_check_forgot(emailaddress, data)
@rad_check_data = data
mail(:to => emailaddress, :subject => "Forgot")
end
end
rad_check_forgot.text.erb
<%= @rad_check_data %>
Tanks!
忘记了。html.erb
<%= form_tag 'forgot' do %>
<div id="error" class="middle-box text-left loginscreen">
<%# Error Messages display here! %>
</div>
<div class="form-group">
<%= text_field_tag "emailaddress" %>
</div>
<div class="form-group">
<%= submit_tag "submit"%>
</div>
</div>
<% end %>
<p class="m-t"> <small>Corperation © 2019</small> </p>
<div>
</div>
辐射检查表
class CreateRadChecks < ActiveRecord::Migration[5.2]
def change
create_table :rad_checks, force: :cascade do |t|
t.string :value, :limit => 253, default: "", null: false
t.string :emailaddress
t.timestamps
end
add_index(:rad_checks, :emailaddress, {:name=>:emailaddress, :length=>{:emailaddress=>32}, :using=>"btree"})
end
end
我认为您不能将列名作为“值”,它是保留关键字。 请检查一次。
更新:您是否获得了params[:emailaddress]
值? 如果它正在获取,那么它应该出现在 RadCheck 表中。 当您使用find_by
方法时,如果条件为假,它将返回nil
。 所以当我们得到nil
时,nil.vlaue 就没有 scope。 这就是你得到那个错误的方式。
请检查表记录中是否存在 params[:emailaddress] 的值。 试试下面的代码。
if params[:emailaddress]
rad_check = params[:emailaddress]
data = RadCheck.find_by(emailaddress: params[:emailaddress]).value
RadCheckMailer.rad_check_forgot(rad_check, data).deliver
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.