Sadece JS formatıyla erişilebiliyorsa kullanabileceğim bir dizi kaynağım var. Rayların rota kaynakları bana formatları artı standart HTML verir. Sadece JS formatı yollarının oluşturulmasının bir yolu var mı?Raylar Rotaları - Bir kaynağa ait kullanılabilir biçimleri sınırlandırma
cevap
sadece biçimi hakkında kısıtlamaları ekleyin:
resources :photos, :constraints => {:format => /(js|json)/}
Yanlış bir şey yapmıyorsam, bu hala/photos: html dosyasına erişmeme izin veriyor. Eksik bir yol istisnası beklediğimde eksik şablon mesajını alıyorum. Düşünceler? –
Bu,/(js | json)/'olmalıdır? – Garrett
Evet, bunu yakaladım ve değiştirdim. Hala benim için çalışmıyor. Kaynaklarım var: üyeler,: controller => 'homes/members',: constraints => {: format =>/js /} –
isteğin biçimi MIME::JS
olmadıkça bir yönlendirme hata başlatan bir before_filter
kullanabilirsiniz.
app/kontrolörleri/application_controller.rb: Bir kapsamda bu rotaları sarmak gerekir raylar Action Controller Guide
I ' ve bu tür bir problemle başa çıkabilmek için benzer bir yaklaşım kullanmışlardır. https://github.com/marcusg/force_format – marcus3006
kaplı olarak
class ApplicationController < ActionController::Base
before_filter :check_js
private
def check_js
raise RoutingError.new('expected application/json') unless request.format == MIME::JS
end
end
:only
, :except
ve :skip_before_filter
ile daha ameliyatla bu filtreyi uygulayın. Kısıtlamalar maalesef bu durumda beklendiği gibi çalışmıyor. Bu tür bir bloğun bir örnektir
...
scope :format => true, :constraints => { :format => 'json' } do
get '/bar' => "bar#index_with_json"
end
fazla bilgi burada bulunabilir
: o kadar almaz nasıl
# routes.rb
class OnlyAjaxRequest
def matches?(request)
request.xhr?
end
end
post "/test/suggestions", to: "test#suggestions", :constraints => OnlyAjaxRequest.new
Bu cevap olarak işaretlenmelidir. –
Eğer 'kaynakları' kullanıyorsanız, bir kapsam bloğuna ihtiyacınız yoktur, sadece ': format => true' ve': kısıtları => ... 'doğrudan' kaynaklar' aramasına ekleyin. – Nathan
Bu durum, kapsamlı bir rota için benim durumumda çalıştı.'kaynaklar: fotoğraflar, format: true, kısıtlamalar: 'json' – maicher
kontrolör. railsadventures
Yukarıdaki çözümlerin hiçbiri benim için işe yaramadı. Bu çözüm ile gidiş sona erdi: Eğer json
daha sadece bir ya da bir başka gerekiyorsa ben seçenek aşağıda size sunuyoruz
post "/test/suggestions", to: "test#suggestions", :constraints => -> (req) { req.xhr? }
https://railsadventures.wordpress.com/2012/10/07/routing-only-ajax-requests-in-ror/#comment-375
Bulundu (cant kullanımını #xhr?
)
resource :offers, only: :show, format: true, constraints: { format: 'pdf' }
Yardım edin umarım
Hangi Rails versiyonunu kullanıyorsunuz? – Garrett
Cevabımı aşağıda kabul edebilir misiniz, doğru olanı, mevcut seçilmiş cevap yanlış ve toplumu karıştırıyor. – koonse