2011-08-25 7 views
6

Ho un modello location e un modello post. Voglio consentire all'utente di creare nuovo posts dalla pagina index del modello location. Come lo faccio? Ho provato rendendo il postnew.html.erb come parziale locationindex.html.erb, ma questo porta ad errori come postnew.html.erb riferimento alla variabile @post.Rails: mostra il modulo da un altro modello in una vista

Come devo fare?

risposta

14

provare qualcosa di simile

LocationController 

def index 
    @location = Location.find(:all) 
    @post = Post.new 
end 

Ora ur vista posizione avrebbe accesso all'istanza variabili @post. Rendering di un parziale utilizzando che

render :partial => 'posts/post', :object => @post 
+0

+1, ... o, in un modo simile a quello che Allesklar propone: usa 'Post.new' al posto della variabile, ma questo dipende dalla vista: la variabile può essere 'hardcoded' lì. – Arsen7

0

Basta creare una variabile @post nell'azione in LocationsController.

+0

che mi dà questo errore: 'Expected /home/eyekandy/rails_apps/eyekandy/app/controllers/locations_controller.rb per definire LocationsController' –

+0

Allora avete un errore di sintassi ** ** nel tuo codice. Potresti mostrare il codice della tua azione? Suppongo che tu abbia modificato solo l'azione, ma l'errore potrebbe essere da qualche altra parte - forse hai rimosso per errore un personaggio? – Arsen7

3

È possibile avviare il form in questo modo:

<%= form_for Post.new do ... %>