2012-05-10 7 views
5

Dato il seguente:nidificati gli attributi non mostrando in forma semplice

modelle

class Location < ActiveRecord::Base 
    has_many :games 
end 

class Game < ActiveRecord::Base 
    validates_presence_of :sport_type 

    has_one :location 
    accepts_nested_attributes_for :location 
end 

controller

def new 
    @game = Game.new 
    end 

View (forma)

<%= simple_form_for @game do |f| %> 
    <%= f.input :sport_type %> 
    <%= f.input :description %> 
    <%= f.simple_fields_for :location do |location_form| %> 
    <%= location_form.input :city %> 
    <% end %> 
    <%= f.button :submit %> 
<% end %> 

Perché il campo posizioni (città) non vengono visualizzati nel modulo? Non ho alcun errore. Cosa mi manca?

risposta

5

Ok Non sono sicuro se stai cercando di scegliere una posizione esistente da associare alla fama o se desideri creare una nuova posizione per ogni gioco.

Supponendo che è il primo scenario:

Cambiare l'associazione nel modello di gioco in modo che un gioco appartiene a una posizione.

class Game < ActiveRecord::Base 
    validates_presence_of :sport_type 

    belongs_to :location 
    accepts_nested_attributes_for :location 
end 

Potrebbe essere necessario aggiungere un campo location_id al modello di gioco tramite una migrazione.

Quindi, invece di un modulo annidato, si sta solo cambiando il campo Posizione sul modello di gioco stesso.

Se è il secondo scenario e si desidera costruire una nuova posizione per ogni gioco allora si avrà bisogno di cambiare i vostri modelli come segue:

class Location < ActiveRecord::Base 
    belongs_to :game 
end 

class Game < ActiveRecord::Base 
    validates_presence_of :sport_type 

    has_one :location 
    accepts_nested_attributes_for :location 
end 

Sarà necessario aggiungere un campo game_id alla posizione modello se non ne hai già uno.

Poi nel controller è necessario costruire un percorso al fine di ottenere i campi del modulo nidificati per mostrare:

def new 
@game = Game.new 
@location = @game.build_location 
end 
+0

Se lo faccio, ottengo: attributo sconosciuto: game_id –

+0

id, via, città , stato, codice_zip, paese –

+0

vedere la risposta modificata sopra – julesie