سؤال

أنا أتابع سلسلة مقاطع فيديو، حيث يقوم المؤلف بإنشاء نظام إدارة محتوى بسيط باستخدام 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، أقترح عليك استخدام الإصدار الذي يستخدمه المؤلف للتخفيف من مشكلات الإصدار المستقبلية مثل هذه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top