2017-07-06 4 views
0

première publication. Im essayant de faire mailgun m'envoyer un email pour les nouveaux abonnés mais quand j'ai rempli le formulaire il me donne 500 erreur de serveur interne et TypeError.Erreur de serveur interne Heroku 500, TypeError (aucune conversion implicite de Symbol en Integer):

Erreur journal

Terminé 500 Internal Server Error dans 13ms (ActiveRecord: 4.9ms) TypeError (pas de conversion implicite de symbole en entier):
app/controllers/contacts_controller.rb: 9: en []' app/controllers/contacts_controller.rb:9:in create '

Y at-il un problème avec mon 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> 

La chose étrange est que si je lance mes codes dans le développement via le serveur Cloud9 il fonctionne très bien, mais dans la production via le serveur heroku il me donne une erreur après avoir essayé pour nous soumettre le formulaire de contact entièrement rempli. J'apprends aussi comment coder en suivant ce website. Le problème est avec la leçon 78.

+1

Inspecter 'params'. Il semble que 'params [: contact]' renvoie 'Array' au lieu de 'Hash' –

+0

' params [: contact] 'est une chaîne ou un tableau, ce n'est pas un hachage. Donc, quand vous faites 'params [: contact] [: nom]' il ne s'attendait pas à: name, il s'attendait à un entier. – SteveTurczyn

+0

Pourriez-vous s'il vous plaît poster votre point de vue et cela aidera à identifier ce que le problème pourrait être dans la construction de vos 'params' – SteveTurczyn

Répondre

-1

nom, adresse e-mail, corps - doit être chaîne.

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

ActionMailer peut fonctionner uniquement avec les types de base (comme chaîne), mais vous codez quelqu'un nom, e-mail, le corps est une classe de symboles.