2011-09-30 10 views
5

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:

&lt;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.

+0

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. –

+0

Ma sens, ale co by to było? Używam Rails 3.1 po wyjęciu z pudełka inaczej ... –

+0

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

Odpowiedz

0

Maybee powinieneś używać surowego. Check this

def compile(template) 
    raw template.source.inspect 
end 
+0

Tak, tak myślisz - niestety, to też nie działa. To prawie tak, jakby Railsy automatycznie wychodziły z wyjścia z mojego handlarza szablonów, bez względu na to, co robię. Zastanawiam się, czy nie ma jakiejś konfiguracji, którą muszę zlokalizować w tym momencie ... –

Powiązane problemy