ما هي أفضل طريقة لتوجيه وحدة تحكم ثابتة في القضبان؟
-
24-09-2019 - |
سؤال
لديّ static_controller مسؤول عن جميع الصفحات الثابتة في الموقع ويعمل على النحو التالي في Routes.RB:
map.connect ':id', :controller => 'static', :action => 'show'
لدي صفحة ثابتة تسمى ذلك من بين معلومات أخرى ، لديها نموذج اتصال. لدي حاليًا جهاز اتصال _controller المسؤول عن إدخال معلومات الاتصال في قاعدة البيانات. داخل ملف routes.rb ، لدي:
map.resources :contacts
يبدو نموذج الاتصال الخاص بي (مبسط) هكذا:
<% form_for @contact do |f| %>
<p class="errors"><%= f.error_messages %></p>
<p>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
</p>
<p class="buttons"><%= f.submit %></p>
<% end %>
وهو ما يقدم بدوره إلى إنشاء إجراءات Consacts_Controller. يبدو أن الإجراء الخاص بي يشبه هذا:
def create
@contact = Contact.new(params[:contact])
if @contact.save
flash[:notice] = "Email delivered successfully."
end
redirect_to "about"
end
المشكلة هي ، هي أنه عندما أعيد توجيه إلى الصفحة الخاصة بي حول error_messages للنموذج. كيف يمكنني الحفاظ على error_messages وما زلت يربط المستخدمين بالعودة إلى عنوان URL الثابت؟ هل ستكون الجلسة/الفلاش كافية (إذا كان الأمر كذلك ، فما هو الرمز الذي سأستخدمه لتمرير رسائل الخطأ) أو هل سأخطئ في هذا الأمر برمته؟
شكرًا!
المحلول
أعتقد أن ما قد يحدث هو أنك تحتاج إلى تقديمها بدلاً من إعادة التوجيه. إعادة توجيه الطلب ، ويطلب من العميل تقديم طلب جديد إلى عنوان مختلف. سوف تفقد أخطائك. إذا فشلت محاولة حفظك في رغبتك في إكمال الطلب عن طريق تقديم الإجراء مرة أخرى مع الأخطاء المعروضة.
def create
@contact = Contact.new(params[:contact])
if @contact.save
flash[:notice] = "Email delivered successfully."
redirect_to @contact #make a new request for the address of the new record or some other address if you want
else
render :action => "new" #complete the request by rendering the new action with the @contact variable that was just created (including the @errors).
end