【问题标题】:TypeError: #<...> is not a symbol类型错误:#<...> 不是符号
【发布时间】:2013-07-17 00:12:40
【问题描述】:

我无法弄清楚这个问题,即使它看起来并不复杂......

我想在我的 Rails 应用程序中制作一个表单来发送电子邮件,但这个表单不起作用。我收到以下错误:

TypeError in MessagesController#create: #&lt;Message content: "test", email: "test@test.fr", name: "test"&gt; is not a symbol

错误发生在:app/controllers/messages_controller.rb:10:in 'create'

1.这是我的messages_controller

class MessagesController < ApplicationController

  def new
    @message = Message.new
  end

  def create
    @message = Message.new(params[:message])
    if @message.valid?
      Messenger.send(@message).deliver
      redirect_to root_url, notice: "Message sent! Thank you for contacting us."
    else
      render "new"
    end
  end

end
  1. 表格new.html.erb:

    <%= form_for @message do |f| %>
        <%= f.text_field :name %>
        <%= f.text_field :email %>
        <%= f.text_area :content, :rows => 5 %>
    <%= f.submit "Send Message" %>
    <% end %>
    
  2. 使用ActiveAttr 构建的Message 模型:

    class Message
      include ActiveAttr::Model
    
      attribute :name
      attribute :email
      attribute :content
    end
    
  3. 我的Messenger邮箱:

    class Messenger < ActionMailer::Base
      default :from => "test@test.com"
    
      def send(message)
        mail(:to => "test@test.com", :subject => "test")
      end
    
    end
    

感谢您的帮助!

【问题讨论】:

  • 我猜错误是在 Messenger 邮件程序的 send.html.erb 中。可以分享一下send.html.erb的代码吗?

标签: ruby-on-rails mailer active-attr


【解决方案1】:

send 替换为不同的方法名称,因为它与 ruby​​ 中定义的方法名称冲突。

http://ruby-doc.org/core-2.0/Object.html#method-i-send

【讨论】:

    【解决方案2】:

    我在使用 send 方法时遇到了类似的 TypeError,因为它需要一个符号,而我传入了其他东西。我通过做类似的事情来修复它

    send(some_variable) if some_variable == Symbol
    

    但是,您似乎正在尝试发送邮件,并且您使用的是旧方法。 Rails 4.1.8 在这里提供了一种新方法:http://api.rubyonrails.org/classes/ActionMailer/Base.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 2021-08-09
      • 2018-11-06
      • 1970-01-01
      相关资源
      最近更新 更多