繁体   English   中英

如何在 Rails 上发送带有 Ruby 的电子邮件地址的值?

[英]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 &copy; 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM