في إجراء التحديث يتم طرح NOMETHODERROR
-
19-09-2019 - |
سؤال
هذا هو شفمدي المصدر
def update
@recipe = Recipe.find(params[:id])
respond_to do |format|
if @recipe.update_attributes(params[:recipe])
format.html {redirect_to :action => "edit" }
end
end
end
أحصل على خطأ في هذا الخط
respond_to do |format|
وفصلت رسالة الخطأ "لديك كائن NIL عندما لا تتوقع ذلك. حدث الخطأ أثناء تقييم NIL.CALL".
الأسطر الخمسة من تتبع المكدس هي كما يلي
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:175:in `respond'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:173:in `each'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:173:in `respond'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:107:in `respond_to'
/Path from my machine to the app/app/controllers/recipes_controller.rb:43:in `update'
ليس لدي أي فكرة عن كيفية تصحيح هذا ولا أستطيع أن أفهم كيف يمكن رفع هذا الخطأ.
أقدر مع الشكر أي مساعدة.
شكرا
المحلول
إذا كنت لا تستجيب لعملاء غير HTML، فلن تضطر إلى استخدام Repound_to.
حاول تغيير الطريقة إلى:
if @recipe.update_attributes(params[:recipe])
redirect_to :action => "edit"
end
إذا كان ذلك يعمل، يبدو الخطأ كما هو في مكان ما في تكوين نوع MIME لتطبيقك.
نصائح أخرى
يظهر هذا الخطأ الخبيذر عندما لا تستخدم Yieled صيغة هدف. في الواقع، يجب أن تفعل شيئا فعليا عندما تفشل مكالمة التحديث_Attributes، على سبيل المثال، مما يجعل تعديل قالب:
def update
@recipe = Recipe.find(params[:id])
respond_to do |format|
if @recipe.update_attributes(params[:recipe])
format.html { redirect_to [:edit, @recipe] }
else
format.html { render :template => 'edit' }
end
end
end
لا تنتمي إلى StackOverflow