0

With the help of @Sasha i created an nested form for treatments in patients:

Now i get this error:

UnknownAttributeError in PatientsController#update

unknown attribute: treatment

My patients update controller actually looks like this:

def update
  @patient = Patient.find(params[:id])

  respond_to do |format|
    if @patient.update_attributes(params[:patient])
      format.html { redirect_to @patient, notice: 'Patient was successfully updated.' }
      format.json { head :no_content }
    else
      format.html { render action: "edit" }
      format.json { render json: @patient.errors, status: :unprocessable_entity }
    end
  end
end

And the form like this:

<%= form_for @patient do |f| %>
  <%= f.fields_for ([@patient, @patient.treatments.build]) do |tf| %>
    <%= render 'treatment_form', form: tf  %>
  <% end %>
  <%= f.fields_for ([@patient, @patient.treatments.build]) do |tf| %>
    <%= render 'treatment_form', form: tf  %>
  <% end %>
  <%= f.submit %>
<% end %>

So i have no clue what i have to add to my patients controller?

I changed my code like @JimLim recomended, but i get the same error:

 ActiveRecord::UnknownAttributeError in PatientsController#update

 unknown attribute: treatment

{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"OPuS9Mmk3guiV20nkw5OaPUFyjVow49H+MMxY37O0r0=",
 "patient"=>{"treatment"=>{"category_id"=>"9",
 "content"=>"dsfsdf",
"day"=>"2013-07-21"}},
"commit"=>"Update Patient",
 "id"=>"9"}
4

1 回答 1

3

The parameters include a treatment key that is not an attribute in your Patient model. If that is the case, you need to

  1. change the form such that the key is treatments instead of treatment, and
  2. add #accepts_nested_attribute_for in your Patient model.

For example,

<%= f.fields_for :treatments, @patient.treatments.build do |tf| %>
  <%= render 'treatment_form', form: tf  %>
<% end %>

class Patient
  accepts_nested_attributes_for :treatments
end

A more detailed explanation is available in the documentation for fields_for.

于 2013-07-21T20:25:03.907 回答