Ho una serie di risorse che desidero solo disponibili se si accede tramite il formato JS. Le risorse di percorso di Rails mi forniscono i formati più l'HTML standard. C'è un modo per specificare che devono essere creati solo i percorsi in formato JS?Rails Rails - Limitazione dei formati disponibili per una risorsa
risposta
Basta aggiungere vincoli sul formato:
resources :photos, :constraints => {:format => /(js|json)/}
A meno che non stia facendo qualcosa di sbagliato, che mi consente comunque di accedere a/photos come: html. Ricevo il messaggio modello mancante, quando mi aspetto un'eccezione di percorso mancante. Pensieri? –
Non dovrebbe essere '/ (js | json) /'? – Garrett
Sì, l'ho preso e l'ho cambiato. Ancora non funziona per me. Ho risorse: membri,: controller => 'case/membri',: constraints => {: format =>/js /} –
è possibile utilizzare un before_filter
che solleva un errore di routing a meno che il formato della richiesta è MIME::JS
.
app/controllers/application_controller.rb:
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
applicare il filtro più chirurgicamente con :only
, :except
, e :skip_before_filter
come coperto nelle rotaie Action Controller Guide
I ' Ho usato un approccio simile per gestire questo tipo di problema https://github.com/marcusg/force_format – marcus3006
Devi avvolgere quelle rotte in un ambito. I vincoli purtroppo non funzionano come previsto in questo caso.
Questo è un esempio di un tale blocco ...
scope :format => true, :constraints => { :format => 'json' } do
get '/bar' => "bar#index_with_json"
end
Maggiori informazioni si possono trovare qui: https://github.com/rails/rails/issues/5548
Questo dovrebbe essere contrassegnato come risposta. –
Se si utilizza 'risorse', non è necessario un blocco di ambito, basta aggiungere': format => true' e ': constraints => ...' direttamente alla chiamata 'resources'. – Nathan
Questo ha funzionato nel mio caso per un percorso pieno di risorse.'risorse: foto, formato: true, vincoli: 'json'' – maicher
come su
# routes.rb
class OnlyAjaxRequest
def matches?(request)
request.xhr?
end
end
post "/test/suggestions", to: "test#suggestions", :constraints => OnlyAjaxRequest.new
non ottiene al controllore del tutto Tratto da railsadventures
Nessuna delle soluzioni di cui sopra ha funzionato per me. Ho finito per andare con questa soluzione:
post "/test/suggestions", to: "test#suggestions", :constraints => -> (req) { req.xhr? }
Trovato su https://railsadventures.wordpress.com/2012/10/07/routing-only-ajax-requests-in-ror/#comment-375
Se è necessario non solo uno o l'altro di json
(uso gergo #xhr?
) Offro a voi delle seguenti opzioni
resource :offers, only: :show, format: true, constraints: { format: 'pdf' }
Spero che sia utile
- 1. Rails: form_for risorsa namespace
- 2. Rails: sottodominio di routing a una risorsa
- 3. Che cos'è una "risorsa" in Rails?
- 4. Rails: come modificare i test per una risorsa nidificata?
- 5. Rails: ricevendo il 'nuovo' percorso per una risorsa nidificato
- 6. Formati personalizzati in Ruby on Rails
- 7. Limitazione delle richieste a un'API di Ruby on Rails
- 8. Rails javascript risorsa mancante dopo precompilare
- 9. Limitazione delle chiamate API in uscita generate da un'app Rails
- 10. Rails best_in_place gem con risorsa nidificata
- 11. Rails 3: modo corretto per eliminare la risorsa utilizzando respond_with
- 12. Rails 3: instradare una risorsa a un altro nome
- 13. Rails: aggiungere un'azione personalizzata alla risorsa
- 14. Rails 3: Come creare una nuova risorsa nidificata?
- 15. In Ruby on Rails, cosa significa "risorsa"?
- 16. Utilizzare AngularJS per recuperare la risorsa nidificata in Rails
- 17. Rails - Asset pipeline - identifica la risorsa per directory
- 18. Rails 3 ignora l'eccezione di limitazione di Postgres
- 19. Mutex per processi Rails
- 20. Rails i18n formati di convalida di errore specifico
- 21. Versioning dei modelli in Ruby on Rails
- 22. Esiste una limitazione per le dimensioni dei metafile di Windows?
- 23. Come avere una risorsa in route per namespace e root path del tutto - Rails 4
- 24. Rails: controllo dei campi modificati
- 25. Rails routing: assegnazione dei valori predefiniti per helper dei percorsi
- 26. Nome personalizzato per l'hash dei parametri da Rails form_for
- 27. Perché URN è uno dei formati più utilizzati per identificare in modo univoco la risorsa?
- 28. Dove mettere le classi personalizzate per renderle globalmente disponibili per l'app Rails?
- 29. Quali tipi di messaggi flash sono disponibili in Rails?
- 30. Risorsa annidata con più risorse parentali in Rails 3
Quale versione di Rails stai usando? – Garrett
Puoi accettare la mia risposta qui sotto, è quella giusta, la risposta selezionata corrente è sbagliata e confonde la comunità. – koonse