كيفية إظهار محتوى النموذج الذي تم إدخاله فقط في ": تأكيد =>" خيار "على Ruby On Rails

StackOverflow https://stackoverflow.com/questions/1879344

  •  18-09-2019
  •  | 
  •  

سؤال

أحاول الحصول على وسيلة لتأكيد المعلومات التي تم إدخالها قبل حفظها بالفعل إلى DB

يعتبر إجراء صفحة تأكيد فردية كما تمت مناقشته هنا

روبي على القضبان: صفحة تأكيد لإنشاء كائن activerecord

ومع ذلك، يتضمن النموذج الخاص بي ملف مرفق باستخدام PaperClip مما يجعله أكثر من مشاحنات لتنفيذها.

فكرت في امتلاك: تأكيد => منبوذ من شأنه أن يظهر المعلومات التي أدخلها المستخدم للتو.

المشكلة هي كيفية إظهار المعلومات التي أدخلها المستخدم، على سبيل المثال

<% form_for @entry, :html => { :multipart => true } do |f| %>
  <%= f.error_messages %>


    <%= f.label :name %><br />
    <%= f.text_field :name %>

    <%= f.label :file %><br />
    <%= f.file_field :file %>

    <%= f.submit 'Create', :confirm => "????? " %>

<% end %>
هل كانت مفيدة؟

المحلول

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

سيستغرق الأمر أكثر من العمل أكثر من مجرد إضافة تأكيد منبثقة، لكنني أشعر أن تجربة المستخدم المحسنة تستحق الجهد الإضافي.

أنا لست على دراية بالطريقة التي يعمل بها PaperClip. لذلك أنت في الغالب لوحدك للحصول على التفاصيل الحميمة.

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

سوف يبدو الاستخدام شيئا مثل هذا:

  1. حكايا المستخدم نموذج جديد.
  2. يتم تحديث المرفق ويتم حفظ السجلات، مع تعيين الحقل النشط إلى FALSE.
  3. إعادة توجيهها إلى صفحة التأكيد التي تعد أساسا صفحة المعرض مع رابط / زر تأكيد وارتباط / زر إلغاء
  4. أ. عند النقر فوق "تأكيد الرابط / الزر"، يرسل طلبا إلى وحدة التحكم في تشغيل إجراء التحديث على إعداد السجل هذا النشط إلى True.

    ب. عند النقر فوق "إلغاء ارتباط / زر"، يرسل طلب إلى وحدة تحكم تجهيز إجراء تدمير على هذا السجل.

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

نصائح أخرى

يمكن أن تأخذ خيار تأكيد لطريقة إرسال القضبان فقط قيمة نصية فقط.

إذا كنت ترغب في إنشاء نص تأكيد ديناميكيا، فستفعل طريقة واحدة لكتابة علامة HTML الخاصة بك، وكتابة JavaScript مخصص لتحليل الحقول التي تريد استخدامها في نصك الذي تم إنشاؤه.

أو يمكنك استخدام طريقة إرسال القضبان، ولكن استخدم شيئا مثل JQuery لإضافة معالج حدث إلى ذلك.

أود فقط رمي بلدي JS في معالج onclick. وبعد هذا كل القضبان يفعل.

<%= f.submit 'Create', :onclick => "confirm('Name is ' + $F('entry_name'));" %>

(ملاحظة، لم تختبر ذلك، ولكن يبدو قريبا. تأكيد وظيفة JS الأساسية، وليس جزءا من أي ليب)

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