2013-06-18 14 views
11

Ho creato un progetto di binari semplice. Tutto ha funzionato fino a quando non ho provato ad aggiungere un nuovo modello Paintings a quello belongs_to e un Patient a has_many Quadri attraverso il trattamento. Quindi in qualche modo il modulo nidificato che ho creato non si presenta, credo che abbia a che fare con il controller! Grazie e saluti dalla Germania!Campi rails_per modulo non visualizzato, modulo nidificato

Trattamenti regolatore:

class TreatmentsController < ApplicationController 
    def create 
    @patient = Patient.find(params[:patient_id]) 
    @treatment = @patient.treatments.create(params[:treatment]) 
    redirect_to patient_path(@patient) 
    end 

    def destroy 
    @patient = Patient.find(params[:patient_id]) 
    @treatment = @patient.treatments.find(params[:id]) 
    @treatment.destroy 
    redirect_to patient_path(@patient) 
    end 
end 

E la forma per i trattamenti con nested fields_for che non si presenta:

<%= form_for([@patient, @patient.treatments.build]) do |f| %> 
    <div class="field"> 
    <%= f.label :content %> 
    <%= f.text_area :content, :cols => "30", :rows => "10" %> 
    </div> 
    <div class="field"> 
    <%= f.label :category_id %> 
    <%= f.collection_select :category_id, Category.find(:all), :id, :typ %> 
    </div> 

    <%= f.fields_for :paintings do |ff| %> 
    <div class="field"> 
     <%= ff.label :name, 'Tag:' %> 
     <%= ff.text_field :name %> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.submit nil, :class => 'btn btn-small btn-primary' %> 
    </div> 
<% end %> 

UPDATE:

il sito in:

<% @patient.treatments.each do |treatment| %> 
    <tr> 
    <td><%= treatment.category.try(:typ) %></td> 
    <td><%= treatment.content %></td> 
    <td><%= treatment.day %></td> 
    <td><div class="arrow"></div></td> 
    </tr> 
    <tr> 
+3

prova f.fields_for: dipinti, Painting.new do | m |. Inoltre, puoi inserire il codice del modello e il codice del controller in più dettagli? –

+0

haha ​​tuo il meglio !! L'ho provato due giorni e ora ce l'hai fatta con un solo boccone di codice aggiunto! Si prega di spostare il commento a una risposta in modo che io possa impostare la risposta giusta! –

risposta

50

Si prega di provare

= f.fields_for :paintings, Painting.new do |p| 
+0

Scusa ma un'altra cosa, come posso mostrare il nome dell'immagine? –

+1

non ho davvero alcuna idea sulle relazioni del modello o sui campi. puoi aggiungerli? –

+0

Spero che il mio aggiornamento sia sufficiente? –

8

provare a fare in seguito a nuova azione nel controller di

@patient.treatments.build 

Partenza parte build_association http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

Si dovrebbe anche leggere su attributi nidificate. utilizzare quelli per riferimento http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

+0

Ancora non funziona per me. – fatuhoku

+1

questa è una sintassi errata. prova '@ patient.treatments.build' – zx1986

9

Anche la domanda è abbastanza vecchio, ma vi manca la new che è fondamentale per questa domanda. I metodi destroy e create non hanno nulla con questo problema. Se si dispone di un metodo new, che sembra qualcosa di simile:

class TreatmentsController < ApplicationController 
    def new 
    @patient = Patient.new 
    end 
end 

allora la soluzione sarebbe non modificare il metodo new di "costruire" la paintings in questo modo:

class TreatmentsController < ApplicationController 
    def new 
    @patient = Patient.new 
    @patient.paintings.build 
    end 
end 
+2

questa dovrebbe essere la risposta accettata. – saadlulu

+0

sì, ma questi codici demo non hanno l'azione '.build' :-( https://github.com/nathanvda/cocoon_simple_form_demo/blob/master/app/controllers/projects_controller.rb#L26 – zx1986

+0

@ zx1986 Cosa vuoi significa per 'non hanno azione build '? Voglio dire che non dovrebbe avere l'azione build.The' build' è solo un metodo per l'oggetto. – Aleks

Problemi correlati