2017-07-06 2 views
0

初めての投稿。 私は新しいユーザー のメールを送信しようとしていますが、私がフォームに入力すると、500の内部サーバーエラーとTypeErrorが表示されます。Heroku 500内部サーバーエラー、TypeError(SymbolからIntegerへの暗黙的な変換なし):

13msの(ActiveRecordの:4.9ms)で500内部サーバーエラーを完了エラーログ

はTypeError(整数にシンボルの無暗黙的な変換):
アプリ/コントローラ/ contacts_controller.rb:9:中[]' app/controllers/contacts_controller.rb:9:in作成 '

私のContactsControllerに問題がありますか?

class ContactsController < ApplicationController 
def new 
@contact = Contact.new 
end 

def create 
@contact = Contact.new(contact_params) 
if @contact.save 
    name = params[:contact][:name] 
    email = params[:contact][:email] 
    body = params[:contact][:comments] 
    ContactMailer.contact_email(name, email, body).deliver 
    flash[:success] = "Message sent." 
    redirect_to new_contact_path 
else 
    flash[:danger] = @contact.errors.full_messages.join(", ") 
    redirect_to new_contact_path 
end 
end 

private 
    def contact_params 
    params.require(:contact).permit(:name, :email, :comments) 
    end 
end 

contact_email.html.erb

<!DOCTYPE html> 
    <html> 
    <head></head> 
    <body> 
     <p>You have received a message from the site's contact form, from 
     <%= "#{ @name }, #{ @email }." %></p> 
     <p><%= @body %></p> 
    </body> 

    </html> 

奇妙なことは、私はcloud9サーバを経由して開発中で、私のコードを実行する場合、それは正常に動作が、Herokuのサーバを経由して生産して、それは試した後、私にエラーを与えることです私たちに完全に記入した連絡フォームを提出してください。 また、websiteに従ってコードする方法を学習しています。 問題はレッスン78です。

+1

'params'を検査してください。 'params [:contact]'は 'Hash'の代わりに 'Array'を返します。 –

+0

' params [:contact] 'は文字列か配列です。ハッシュではありません。 'params [:contact] [:name]'を実行したとき、 ':name'は期待していませんでした。 – SteveTurczyn

+0

あなたの意見を投稿してください。それはあなたの 'params'を構築する上での問題の特定に役立ちます – SteveTurczyn

答えて

-1

名前、メール、本文 - 文字列でなければなりません。

inspect it by 
name.class 
email.class 
body.class 

actionmailerのは、(文字列のような)基本的なタイプでのみ動作しますが、あなたに名前、電子メールで誰かをコーディングすることができ、体は、シンボルクラスです。

関連する問題