TypeError:#<...>不是符号

lge*_*ard 2 ruby-on-rails mailer active-attr

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

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

TypeError in MessagesController#create: #<Message content: "test", email: "test@test.fr", name: "test"> is not a symbol

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

我是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
Run Code Online (Sandbox Code Playgroud)
  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 %>
    
    Run Code Online (Sandbox Code Playgroud)
  2. Message使用ActiveAttr以下构建的模型:

    class Message
      include ActiveAttr::Model
    
      attribute :name
      attribute :email
      attribute :content
    end
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我的Messenger邮件:

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

谢谢您的帮助!

jvn*_*ill 7

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

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