Ruby on rails 如何使用RubyonRails发送电子邮件地址的值?
我有一个类似下面的表单区域,如果您有电子邮件地址,我希望发送该电子邮件地址的值。但我得到一个错误,没有价值 我希望通过电子邮件发送电子邮件的值 nil:NilClass的未定义方法“value”Ruby on rails 如何使用RubyonRails发送电子邮件地址的值?,ruby-on-rails,Ruby On Rails,我有一个类似下面的表单区域,如果您有电子邮件地址,我希望发送该电子邮件地址的值。但我得到一个错误,没有价值 我希望通过电子邮件发送电子邮件的值 nil:NilClass的未定义方法“value” Extracted source (around line #71): rad_check = params[:emailaddress] **data = RadCheck.find_by(emailaddress: params[:emailaddress]).value** RadChec
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_检查控制器.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\u check\u 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
class RadCheckMailer”test@domain.com"
def rad_check_忘记(电子邮件地址、数据)
@无线电检查数据=数据
邮件(:收件人=>emailaddress,:主题=>“忘记”)
结束
结束
rad\u check\u遗忘.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>
合作与复制;2019年
放射性检查表
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
class CreateRadChecks253,默认值:“”,null:false
t、 字符串:emailaddress
t、 时间戳
结束
添加索引(:rad\u checks,:emailaddress,{:name=>:emailaddress,:length=>{:emailaddress=>32},:using=>“btree”})
结束
结束
我认为您不能将列名作为“值”,它是一个保留关键字。请检查一下
更新:您是否获得参数[:emailaddress]
值?如果它得到了,那么它应该出现在RadCheck表中。当您使用find_by
方法时,如果条件为false,它将返回nil
。所以当我们得到nil时,就没有nil.vlaue的作用域。这就是你犯错误的方式
请检查表记录中是否存在参数[: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
你说得对,我改了,但问题是一样的……”data=RadCheck.find_by(emailaddress:params[:emailaddress]).radvalue“当我在中键入电子邮件地址时”test@test.com“电子邮件不是params[:emailaddress],而是来并工作的。首先,通过在控制器中像
data=RadCheck这样插入参数。通过(emailaddress:params[:emailaddress])
查找参数。”。它是返回值,那么上面的代码应该是工作的,否则它将给出以下Nil类错误。当我输入表单地址时,我得到了这个错误。RadCheck表中有数据test@test.com还有radvalue列,但是当我尝试输入上面的链接时,表单没有出现在我面前,我得到了错误。当我将其替换为“email address”而不是params[:emailaddress]时,一切都可以正常工作。首先,通过像data=RadCheck一样在controller中填充参数。find_by(emailaddress:params[:emailaddress])。它是返回值,那么上面的代码应该是有效的,否则它将给出以下Nil类错误。。。。。我用你写的东西做了一些实验。但是我没有成功,你能给我一个示例代码吗?你使用的是强参数还是数据库中存在记录?注册表有可用的电子邮件地址:test@test.com值:测试数据。