Devise'yi farklı bir mime-type/content-type kullanarak nasıl çalıştırabilirim?

Ruby on Rails ile Devise kullanıyorum. Ben/myapp/products.test farklı bir mime-type ile kullanıyorum birkaç sayfa var ... bu yüzden 'test' denilen bir mime-tip kaydettim ve bu metin/html benzer ... ve ben var html.erb şablonunu veya test.erb şablonunu görüntülemek için içerik anlaşması ...

Şimdi - bir authenticate_user var! denetleyicideki yöntem - ve ben 'test' mime-type kullanıyorum - düzgün bir şekilde yönlendirilmedim - hiç yönlendirilmiyorum - sadece bir "Bir oturum açmanız ya da devam etmeden önce kaydolmanız gerekiyor. " mesaj.

Devise'de html dışında bir mime-type kullandığımda hangi yönlendirme yapılması gerekiyor?

1

1 cevap

Aşağıdaki wiki sayfasındaki cevabın bir kısmını buldum: https://github.com/plataformatec/devise/wiki/How-To:-Make-Devise-work-with-other-formats -like-mobil, -iphone-ve-ipad- (Raylar özgü )

Yani - özet olarak (soruda açıklandığı gibi mim tipinin kaydedilmesinin yanı sıra):

Config/initializers/devise.rb dosyasında config.navigational_formats satırını kaldırın ve şununla değiştirin:

config.navigational_formats = [:"*/*", "*/*", :html, :test]

Başlatıcılara bir dosya ekleyin ve buna aşağıdakileri ekleyin:

ActionController::Responder.class_eval do
  alias :to_test :to_html
end

Ayrıca bir düzenleme yöntemini geçersiz kılmam gerekiyordu, çünkü mim türüm aslında html'ye de yanıt veriyor - ama aynı zamanda test için de yanıt verip vermediğini görmek istiyorum. Yeniden başlatıcılar klasöründe, aşağıdakileri içeren bir dosya ekleyin:

module Devise
  module Controllers
    # Helpers used in both FailureApp and Devise controllers.
    module SharedHelpers

      protected

      # Helper used by FailureApp and Devise controllers to retrieve proper formats.
      def request_format
        @request_format ||= if request.format.test?
          :test
        elsif request.format.respond_to?(:ref)
          request.format.ref
        elsif MIME_REFERENCES
          request.format
        elsif request.format # Rails < 3.0.4
          request.format.to_sym
        end
      end

    end
  end
end

Yukarıdaki yöntemi geçersiz kılmak yerine, Sertifika 'daki bir yöntemi geçersiz kılmak için yetkisiz URL'ye yeniden yönlendirmek daha temiz olabilirdi, ancak tam olarak anlayamadım. Ayrıca Devise (upstream) yöntemlerinin yöntemleri geçersiz kılmak için daha iyi bir yer olup olmadığını da belirsiz.

1
katma
Ikinci düşünceler - Devise SharedHelpers gerçekten gerekli değil - sadece size yanıt vermek için tasarladığınız kontrolörlerin üstüne eklemek gerekir: test: html. Bu yapmalı.
katma yazar Joerg, kaynak