وحدة تحكم تطبيق الويب Ruby on Rails تولد خطأ
-
20-12-2019 - |
سؤال
أنا أتابع سلسلة مقاطع فيديو، حيث يقوم المؤلف بإنشاء نظام إدارة محتوى بسيط باستخدام RoR 4، ولكن لدي حاليًا RoR 3.x مثبتًا.لقد اتبعت كل التعليمات البرمجية إلى "T" ولكن عندما أحاول إنشاء موضوع بسيط في نظام إدارة المحتوى البسيط، تظهر لي رسالة خطأ.لذلك قمت بفحص السجل/production.log
وأنا أتلقى الخطأ التالي ،TypeError (no implicit conversion of Symbol into String):
يبدو رمز وحدة التحكم كما يلي،
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
والطريقة الخاصة التي قمت بإنشائها للموضوع الجديد تبدو كما يلي
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
المحلول
يخبرك المؤلف أنك بحاجة إلى التغيير @subject = Subject.new(subject_params)
ل @subject = Subject.new(params[:subject])
.
params.require(:subject).permit(:name, :position, :visible)
هي إحدى ميزات Rails 4 تسمى المعلمات القوية.إذا كنت جديدًا في Rails، أقترح عليك استخدام الإصدار الذي يستخدمه المؤلف للتخفيف من مشكلات الإصدار المستقبلية مثل هذه.