2012-07-09 7 views
5

Come si esegue il rendering di un partial senza dover fornire "_" davanti al nome del file? C'è un parametro che posso chiamare per non usarlo?Rails - Rendering di un partial senza dover usare "_" davanti al nome del file?

Questo problema si è verificato utilizzando RABL e Backbone: l'utilizzo di RABL mi richiede di avere un file nelle viste come "index.json.rabl". Ma quando uso embeddare il JSON direttamente sul caricamento della pagina (come al solito con Backbone), mi viene richiesto di chiamare il file "_index.json.rabl". Questi 2 file sono la stessa identica cosa, solo bisogno di avere nomi diversi. Sto cercando di usare solo 1 file, "index.json.rabl" e forzare la funzione render() per cercare quel nome di file, senza "_".

=> EDIT

Le soluzioni standard che le persone hanno di seguito descritte non funzionano. È probabile che si tratti di un problema RABL? Il codice sottostante sempre passa al file views/countries/_index.json.rabl.

Nel mio file .erb

countryList.reset(<%=get_json("countries", "index", @countries)%>); 

Nel mio file application_helper.rb

def get_json(view_path, view_action, object) 
    path = view_path + '/' + view_action + ".json" 
    return raw(render(path, object: object, :formats => [:rabl])) 
end 

risposta

1

Dal RailsCast #322 on RABL:

<div id="articles" data-articles="<%= render(template: "articles/index.json.rabl") %>" > 

Inizia da qui, e poi capire cosa c'è sbagliato. Ma è chiaro che render template: path è la sintassi che si desidera.

+0

Il codice che hai incollato da RailsCast non funziona. Incollato letteralmente nella mia pagina, cambiando "articoli" in "Paesi", sempre lo stesso errore "Modello mancante". – bluedevil2k

+0

Probabilmente è il momento di creare un'app di vanilla rails con un modello Rabl implementato come Railscasts e di vedere il codice da soli. La maggior parte delle risposte qui ti dice la stessa cosa: è probabile che nella tua app ci sia qualcosa che sta causando i tuoi problemi. –

1

Hai provato render :template => "file_name"?

+0

che ancora lo utilizza per default "_" nella cartella views/layouts - genera un errore se quel file non è lì – bluedevil2k

+0

che non può essere corretto, controlla questo capitolo sulla funzionalità 'render': http: // guides.rubyonrails.org/layouts_and_rendering.html#using-render – keymone

0

prova Ok:

<%= render :file => 'views_directory/index' %> 

Dove views_directory è il nome della directory in vista 8)

antiche:

Se il contenuto è lo stesso uso:

render :partial => "index" 

in index.json.rabl e il contenuti in _index.json.rabl

+0

Sto cercando di evitare di avere 2 file creando una funzione di aiuto che posso chiamare che codificherà intorno alla necessità di "_". Prendi il mio esempio x 50 per una grande applicazione, sarebbe molto più semplice avere un semplice metodo di supporto. – bluedevil2k

+0

Vedere risposta da @ChrisLedet –

+0

No, non funziona neanche. Sembra che sia un problema specifico di RABL ora. Modificherò il mio post sopra per includere il codice RABL. – bluedevil2k

2

Potete eseguire il rendering di un file nel modo seguente:

render :file => "filename" 
Problemi correlati