Wir haben unsere Anwendung gerade mit einem SSL-Zertifikat gesichert. Der Umstieg auf HTTPS erweist sich als komplexer, als wir gedacht haben, und wir sortieren derzeit einige der resultierenden Fehler.Schienen 4 - MissingTemplate/Fehlender Teilfehler, nur in Produktion
Wir haben einen AJAX-Aufruf in CoffeeScript, wo Schienen reagiert, indem der HTML-Code einer partiellen. Dies funktioniert perfekt in der Entwicklung.
Coffee:
coffee_method: (pos, uid) =>
$.ajax '/contoller/test/',
type: 'POST'
data:
pos: pos
uid: uid
success: (data) ->
$('#result-div').html(data) #Populates side menu with _next_destination_menu content
error: ->
alert 'How embarassing! Something went wrong - please try your search again. '
Controller:
def test
... #do some stuff
puts "format requested: #{request.format}"
puts "format url_encodeded: #{request.format.url_encoded_form?}"
render partial: 'trips/_test' #app/views/trips/_test.html.erb
end
jedoch in der Produktion, so erhalten wir die folgende Fehlermeldung: ActionView::MissingTemplate (Missing partial trips/_test with {:locale=>[:en], :formats=>[:url_encoded_form], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}.
Nach einigem Graben, ich die Anfrage in der Produktion heraus war ein anderes Format. Unter Verwendung dieser puts
Linien in der Steuerung zu debuggen, hier sind die Ergebnisse:
Produktion:
format requested: application/x-www-form-urlencoded
format url_encodeded: true
Entwicklung:
format requested: */*
format url_encodeded: false
Was ist der beste Weg, um dieses Problem zu behandeln. Do I:
- Ändern Sie den Inhaltstyp jedes AJAX-Aufrufs im CoffeeScript?
- Fügen Sie eine
respond_to...format.url_encoded_form {render partial: trips/test}
zur Steuerung hinzu?
Letzteres scheint, wie ich Code werden duplizieren würde, weil ich das gleiche Teil machen möchten, unabhängig vom Format der Antrag kommt. Ich habe versucht, format.all {...}
aber das gleiche Problem aufgetreten. Alle Best Practices werden geschätzt!
Update:
die Antwort geben Angeben direkt gibt mir die gleiche fehlende Vorlage Fehler:
respond_to do |format|
format.html {render partial: 'trips/test'}
format.json {render partial: 'trips/test' }
format.url_encoded_form {render partial: 'trips/test'}
end
Update 2:
Die Anfrage-Header für beide localhost und Produktion Derselbe Inhaltstyp ist application/x-www-form-urlencoded
, obwohl format.url_encoded_form?
false zurückgibt.
Accept:*/*
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4
Connection:keep-alive
Content-Length:37
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Verwenden Sie einen Proxy (wie nginx?), Der die Anfrage zu verändern könnte? –
@NickTomlin - Ich glaube nicht, dass wir einen Proxy verwenden, aber wir verwenden AWS CloudFront für eine Web-Distribution. – CHawk