2013-04-02 20 views
5

che potevo fare:Qual è il modo più semplice per utilizzare i modelli di visualizzazione dei baffi nelle guide?

render :text => Mustache.render(view_template_in_a_string, object_hash) 

nel mio controller, ma sembra più convenzionale di mettere view_template_in_a_string in un suo file viewname.mustache.html sotto views/NomeControllore/action.mustache.html come farei con l'azione. html.erb

attualmente io uso

gem 'mustache' 

per il mio baffi esigenze

Come posso usare must viste mal di come farei con erb


Capisco che i baffi è logica di meno, non ho bisogno di logica nel mio punto di vista


mia attuale mod:

# controllers/thing_controller.rb 
def some_action 
    hash = {:name => 'a name!!'} 
    vw = File.read('./app/views/'+params[:controller]+'/'+params[:action]+'.html.mustache') || "" 
    render :text => Mustache.render(vw, hash), :layout => true 
end 

risposta

1

Basta usare questo gioiello:

https://github.com/josh/mustache-rails

In questo modo è possibile configurare facilmente l'applicazione rotaie per servire i modelli di visualizzazione corretti, in modo da non aver più bisogno del tuo hack.

+4

Questa gemma non esiste più. Poiché l'unica risposta è la tua, ti suggerisco di aggiornarla. – installero

4

Una risposta aggiornata poiché la soluzione originale, baffi-binari, cessa di esistere.

La gemma è:

https://github.com/agoragames/stache

E un esempio ridondante, ma semplice da affrontare come utilizzare Stache nel nostro progetto rotaie, faremo l'inizio di una rumori Demo App.

Per iniziare aggiungeremo il mustache e il stache gem nel nostro Gemfile ed eseguiamo bundle install.

Poi, nel nostro config/application.rb abbiamo bisogno di dire stache utilizzare mustache (l'altra opzione disponibile è handlebars, anche, questa e altre opzioni di configurazione può essere trovato sul loro github page).

Stache.configure do |config| 
    config.use :mustache 
end 

Ecco la struttura di directory di esempio con alcuni file di esempio per la nostra applicazione:

app/ 
    controllers/ 
    noises_controller.rb 
    models/ 
     noise.rb 
    templates/ 
    noises/ 
     animal.mustache 
    views/ 
    noises/ 
     animal.rb 

In controllers/noises_controller.rb

class NoisesController < ApplicationController 
    def animal 
    end 
end 

In models/noise.rb

class Noise < ActiveRecord::Base 
    def self.dog 
    "ar roof" 
    end 

    def self.sheep 
    "baa" 
    end 

    def self.bullfrog 
    "borborygmus" 
    end 
end 

In templates/noises/animal.mustache

<p>This is what a dog sounds like: {{ dog }}</p> 
<p>This is what a sheep sounds like: {{ sheep }}</p> 
<p>And bullfrogs can sound like: {{ bullfrog }}</p> 

In views/noises/animal.rb

module Noises 
    class Animal < Stache::Mustache::View 
    def dog 
     Noise.dog 
    end 

    def sheep 
     Noise.sheep 
    end 

    def bullfrog 
     Noise.bullfrog 
    end 
    end 
end 

Speriamo che questo chiarisce un esempio di come si possa utilizzare stache e mustache in un'applicazione rotaie per servire i modelli di vista corretti.

Problemi correlati