سؤال

وفي نهاية واحد من الإجراءات تحكم بلدي ولست بحاجة لإعادة توجيه إلى صفحة التي تقبل فقط طلبات وضع. لقد سعيت لمعرفة كيفية الحصول على 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 المواصفات نفسها لا تكشف عن أي وسيلة لتغيير نوع الطلب المتصفح يجعل عبر إعادة التوجيه.

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 "> باستخدام جافا سكريبت .

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