كيف يمكنك أن تجعل redirect_to استخدام طلب HTTP مختلف؟
-
21-08-2019 - |
سؤال
وفي نهاية واحد من الإجراءات تحكم بلدي ولست بحاجة لإعادة توجيه إلى صفحة التي تقبل فقط طلبات وضع. لقد سعيت لمعرفة كيفية الحصول على redirect_to لاستخدام طلب وضع ولكن دون نجاح.
هل هذا ممكن؟ أم أن هناك طريقة أخرى لتحقيق ذلك؟
المحلول 3
وطيب، ولذا فإنني وجدت حلا لمشكلتي. لقد وجدت كتابة جيدة جدا حتى على الوضع هنا . تنفيذ بلدي يبدو مثل هذا:
private
def redirect_post(redirect_post_params)
controller_name = redirect_post_params[:controller]
controller = "#{controller_name.camelize}Controller".constantize
# Throw out existing params and merge the stored ones
request.parameters.reject! { true }
request.parameters.merge!(redirect_post_params)
controller.process(request, response)
if response.redirected_to
@performed_redirect = true
else
@performed_render = true
end
end
وبعد ذلك اتصلت هذه الطريقة كما يلي:
redirect_post :controller => 'registrations', :action => 'order', :_method => 'put', :authenticity_token => params[:authenticity_token]
وهكذا كنت قادرا على 'وهمية' طلب وضع عن طريق تقديم طلب آخر (باستخدام redirect_post
) ثم تعيين "وضع" إلى المعلمة _method
. اذا نظرتم الى طلب put
العادي كل ما هو post
من نموذج مع المعلمة _method
. حتى hackish لها قليلا لكنه يحصل على هذه المهمة.
وأيضا، لديك للتأكد من أنه عند استدعاء redirect_post
قيم التجزئة الخاصة بك هي سلاسل وإلا سيتم طرح الأخطاء.
نصائح أخرى
وأنا لا أعتقد أنك قادرة على القيام بذلك، وأظن أن القيد هو جزء من HTTP نفسها.
عند استخدام على redirect_to - يمكنك. إعادة توجيه يحدث بأنه "302 نقل" رأس ما لم ينص على خلاف ذلك في معلمات
وبعد نظرة على HTTP المواصفات نفسها لا تكشف عن أي وسيلة لتغيير نوع الطلب المتصفح يجعل عبر إعادة التوجيه.
<اقتباس فقرة>وهذه الفئة من رمز الحالة تشير يحتاج أن اتخاذ مزيد من الإجراءات الواجب اتخاذها من قبل وكيل المستخدم من أجل الوفاء الطلب. الإجراء المطلوب MAY أن يقوم بها وكيل المستخدم دون التفاعل مع المستخدم إذا وإلا إذا كانت الطريقة المستخدمة في الطلب الثاني هو GET أو الرأس.
اقتباس فقرة>وأعتقد أنك قد تحتاج إلى استخدام جافا سكريبت لتحقيق هذه الوظيفة، أو ربما إعادة النظر في تدفق التحكم في التطبيق الخاص بك.
إذا كان العمل في وحدة تحكم نفس حيث كنت في محاولة لإعادة توجيه من، ببساطة استدعاء الإجراء وتقديم قالب مثل ذلك:
def show
index
render :action => "index"
end
إذا لم تكن كذلك، ثم أنا لا أعرف كيف نفعل ذلك.
هل يمكن إعادة توجيه إلى صفحة مختلفة أن يصدر طلب وضع من العميل، <وأ href = "http://www.wynia.org/wordpress/2007/03/18/not-just-get-and- بعد HTTP-وضع و-حذف-مع جافا سكريبت / "يختلط =" نوفولو noreferrer "> باستخدام جافا سكريبت .