سؤال

وكيف يمكنني تقديم بعد تنفيذ هذا الإجراء في وحدة تحكم راحة بدلا من إعادة توجيه.

ولدي وحدة تحكم مع الإجراءات القياسية، وأضاف لي عمل خاص يضيف البيانات إلى الموارد في السؤال، من خلال النموذج في صفحة #show (فكر التعليقات على وظيفة). أنا التحقق من صحة المدخلات من النموذج وتريد إعادة تقديم العمل عرض على الخطأ وإعادة توجيه لعمل عرض على النجاح.

وأريد أن تجعل لإنقاذ المستخدم من إدخال المعلومات الخاصة بهم مرتين، ولكن عندما أحاول تقديم عمل عرض مع وجود خطأ في ومضة [إشعار] أحصل على خطأ القول إنني لست مع تحديد الهوية. عندما أقوم تحديد الهوية، وأنه يحاول تقديم نموذج جديد لا وجود له حتى الآن.

وأنا أفكر أنه يجب أن تكون بسيطة مثل:

def add_comment
  if my_validation?
    save the object
    redirect_to :action => "show", :id => params[:id]
  else
    render :action => "show", :id => params[:id]
  end
end

وهذا ليس قانون بلدي الفعلي، مجرد شيء لقد وضعت للتو كمثال على ذلك.

هل كانت مفيدة؟

المحلول

وأفضل طريقة لإعادة تقديم: جديد

def create
  @obj = TheObject.new(params[:object])
  render :action => :new unless @obj.save
end

وفي new.html.erb

<% form_for :obj, 
  :url => object_url(@obj), :html => {:method => :post} do |f| %>

  <%= f.text_field :name %>
<% end %>

وبهذه الطريقة، والمدخلات في شكل سيتم معبأة سلفا مع ما أدخلها المستخدم.

نصائح أخرى

وإنشاء كائن بيانات جديد وإضافة القيم من النموذج، قبل أن rerender، واعتقد انها ستعمل بعد ذلك. إذا كنت لا تزال تحصل المشاكل، ومحاولة وضع منطقية لتحرير جديدة مقابل الصفوف الموجودة أو إنشاء رأيين مختلفين تماما.

ولقد فعلت ذلك من قبل ولكن لا أتذكر تماما كيف. أحيانا عندما كنت استخدام نموذجي جدا من نمط MVC، كان الموست "automagical"، othertimes (كما اضطررت لاستخدام قاعدة بيانات ملتوي القديمة) واضطررت الى رمز كل السحر نفسي. النقيب في بعض الأحيان وظيفة .new? (أو ما كان يسمى) على الكائن أكتيفيريكورد، othertimes كنت "القيم السحرية" مؤقتة لمعرف (عادة سلاسل أبجدية للقيم معرف غير صالحة.

و(I appologize لو ارتكب بعض الأخطاء، انها فترة من الوقت منذ أن مشفرة كود القضبان ...)

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