Pracuję nad aplikacją Rails 3.1, używając szablonów JavascriptMVC i ejs w kliencie, aby wykonać skomplikowane funkcje w mojej aplikacji. Niestety składnia ejsa jest bardzo podobna do składni erb, do tego stopnia, że nie mogę zachować kodu w tym samym pliku (chociaż, jeśli ktoś wie o dobrym sposobie na to, byłbym zachwycony). Ostatecznie chcę móc zastosować kod niektórych szyn w szablonie ejs (powiedzmy, dla I18n), ale w tym momencie będę po prostu zadowalać się uzyskaniem tego do pracyCzęściowy szablon railsów przy użyciu niestandardowego programu obsługi jest w stanie uniknąć html
Podążając za przykładem z this question stworzyłem niestandardowy handler szablonów, który wygląda następująco:
module CommonModel
class Handler < ActionView::Template::Handler
include ActionView::Template::Handlers::Compilable
def compile(template)
template.source.inspect
end
end
end
ActionView::Template.register_template_handler :ejs, CommonModel::Handler
Potem stworzył częściową szablon, który ma mój kod Ejs w nim: _jmvc_templates.html.ejs
<script type="text/ejs" id="my_ejs_template">
<div>Some ejs here</div>
</script>
ciągu mojego istniejącego szablonu, próbuję Uwzględnij moją częściowy:
<%= render 'path/to/my/ejs/templates/jmvc_templates' %>
W tym momencie plik jest włączone i mój Wózek jest używany, ale wszystko jest uciekł, więc mój div w moim szablonu zostanie wygenerowana na stronę tak:
<div%gt;
I "Jestem pewien, że brakuje mi czegoś oczywistego tutaj, ale nie wiem, co to może być ... W jaki sposób mogę uzyskać ten szablon obsługi, aby po prostu uwzględnić mój szablon oparty na ejs bez ucieczki od całego html w nim?
Edit:
Znalazłem że nazwanie render z html_safe działa:
<%= render('path/to/my/ejs/templates/jmvc_templates').html_safe %>
To wydaje się kludge chociaż - tam musi być jakiś sposób, aby uzyskać renderujący erb leczyć tekst z mojego programu obsługi jako bezpieczny tekst HTML.
Więc coś pomiędzy swoje 'def compile' i' <% = czynią ...%> 'robi coś do łańcucha, który wysyła go z powrotem na„nie HTML bezpieczny”trybie. –
Ma sens, ale co by to było? Używam Rails 3.1 po wyjęciu z pudełka inaczej ... –
Maybee powinieneś używać surowego. Sprawdzić [surowy vs html_safe vs H] [1] [1]: http://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html – charlysisto