2013-07-18 20 views
1

我無法弄清楚這個問題,即使它似乎並不複雜...類型錯誤:#<...>不是一個符號

我想打一個表格發送電子郵件在我的Rails應用程序,但是這一次不工作。我收到以下錯誤:

TypeError in MessagesController#create:在發生 #<Message content: "test", email: "[email protected]", name: "test"> is not a symbol

錯誤:app/controllers/messages_controller.rb:10:in 'create'

1.here是我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. Message模型中使用ActiveAttr內置:

    class Message 
        include ActiveAttr::Model 
    
        attribute :name 
        attribute :email 
        attribute :content 
    end 
    
  3. Messenger郵件:

    class Messenger < ActionMailer::Base 
        default :from => "[email protected]" 
    
        def send(message) 
        mail(:to => "[email protected]", :subject => "test") 
        end 
    
    end 
    

謝謝您的幫助!

+0

我猜錯誤在Messenger郵件程序的send.html.erb中。你可以分享send.html.erb的代碼嗎? –

回答

0

我使用send方法,因爲它期待一個符號也有類似的類型錯誤,我在別的過去了。我固定它通過執行類似

send(some_variable) if some_variable == Symbol 

但是,它看起來像你正在嘗試發送郵件和您使用的是舊的方式來做到這一點。 Rails 4.1.8有一個新的方法可以這樣做:http://api.rubyonrails.org/classes/ActionMailer/Base.html

相關問題