Mam kontroler szyn z blokiem rescue_from
, w którym nazywam się render
.request.format w rescue_from block
class SomeController < ApplicationController
rescue_from Some::Error, :some_error
private
def some_error error
@error = error
render 'error'
end
end
Najdziwniejsze jest to, że nawet jeśli mam widok error.js.erb
, szyny będą zawsze wykorzystywać error.html.erb
, nawet jeżeli wniosek jest JS
:
Started GET /some/1
Processing by SomeController#show as JS
...
Rendered some/error.html.erb
a nie jak w skróconym dzienniku powyżej mówi renderuje się jako JS, ale nadal używa pliku HTML. Numer .js.erb
znajduje się w odpowiednim miejscu i renderowanie widoków JS, gdy nie ma włączonego rescue_from
, działa dobrze.
Co tu się dzieje?
Update 1: Stworzyłem test repository aby zademonstrować problem
aktualizacji 2znalazłem rozwiązanie (patrz niżej). Czy ktokolwiek może zaproponować bardziej ogólne rozwiązanie, takie jak te poniżej, czy możesz mi powiedzieć, dlaczego byłoby to niemożliwe lub naprawdę zły pomysł? Nagroda jest nadal otwarta.
- Czy jest sens, aby utworzyć żądanie rozwijane, aby ustawić
self.formats
wActionController::Rescue.process_action
lub - się naprawdę szalona i spróbować wznowić stos jeden poziom głębiej niż gdzie błąd powstał
Czy próbowałeś "błąd" renderowania, format: request.format'? – eirikir
Mam zaktualizowane pytanie z linkiem do repozytorium testów. Jeśli dodaję 'formats: request.format', wyświetli się komunikat, że nie może znaleźć szablonu do renderowania. – amiuhle