ما هي أفضل طريقة لتوجيه وحدة تحكم ثابتة في القضبان؟

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

سؤال

لديّ 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top