ruby on rails web app contrôleur génère l'erreur
-
20-12-2019 - |
Question
Je suis en train de suivre une série de vidéos, où l'auteur est de créer un CMS simple d'utilisation à l'aide de RoR 4, mais j'ai actuellement RoR 3.x installé.J'ai suivi tout le code d'un "T", mais lorsque j'essaie de créer un sujet simple dans le CMS simple d'utilisation, j'obtiens une erreur.J'ai donc vérifié le journal ou de la production.journal
Et j'obtiens l'erreur suivante,
TypeError (no implicit conversion of Symbol into String):
Le contrôleur de code ressemble à celui-ci,
def create
# Instantiate a new object using form parameters
# the below line should work with rails v3.x
# @subject = Subject.new(params[:subject])
@subject = Subject.new(subject_params)
# Save the object
if @subject.save
# add flash hash
flash[:notice] = "Subject created successfully."
# if save succeeds, redirect to the index action
redirect_to(:action => 'index')
else
# if save fails, redisplay the form so user can fix problems
render('new')
end
end
Et la méthode privée j'ai créé pour l'objet de nouvelles params ressemble à la suivante
private
def subject_params
# same as using "params[:subject]", except that it:
# - raises an error if :subject is not present
# - allows listed attributes to be mass-assigned
params.require(:subject).permit(:name, :position, :visible)
end
La solution
L'auteur vous dit que vous avez besoin de changer @subject = Subject.new(subject_params)
pour @subject = Subject.new(params[:subject])
.
params.require(:subject).permit(:name, :position, :visible)
est un les Rails 4 fonction appelée Forte Paramètres.Si vous êtes nouveau sur les Rails, je vous suggère d'utiliser la version de l'auteur utilise pour soulager les futures version de questions de ce genre.