Fehler mit:verschachtelte Attribute mit Kontrollkästchen in Schienen Zugabe von 4 Massenzuordnung
param is missing or the value is empty: color
ich ein Formular mache, wo ich verschachtelte Attribute zu einem übergeordneten Datensatz hinzufügen können, und ich möchte sie durch Kontrollkästchen hinzuzufügen. Ich habe das Elternmodell "Car" und das Kindmodell "Colors" ... aber ich möchte mit einigen Standardfarben beginnen ... also habe ich auch das Modell "Sample_Colors", das sich basierend auf den "Car_Models" ändert.
ich mehr „Farben“ zu einem zugehörigen „Car“ mit Kontrollkästchen hinzufügen versuchen ... Ich will nicht eine HABTM Beziehung mit „Sample_Colors“ und „Farben“, wie ich die „Farben“ Rekord sein muß editierbar und nicht nur eine Join-Tabelle. Ich habe dies mit HABTM gemacht, und deshalb verstehe ich nicht wirklich, warum ich keinen Nicht-Join-Tabellendatensatz auf ähnliche Weise erstellen kann.
Wo ich Probleme habe, ist mit den Massenzuweisungen ... es entweder wirft den Fehler oben oder kann die colors_id nicht finden ...
zu klären, was ich versuche zu tun:
erstellen
die Kontrollkästchen müssen
1. eine neue „Farbe“ Record (@ color.new), die mit dem @car Datensatz Mutter
2. Stellen Sie die „value_one“ Spalte des @ color.new Datensatz zugeordnet ist, sample_color.value_one
3. Setzen Sie die Spalte "value_two" des @ color.new-Datensatzes auf den Wert sample_color.value_two
4. Die Anzahl der Checkboxen, die erstellt werden == die @sample_colors, die iteriert werden.
car_model.rb
class CarModel
has_many :sample_colors, dependent: :destroy
has_many :cars, dependent: :destroy
car.rb
class Car
has_many :colors, dependent: :destroy
belongs_to :car_model
accepts_nested_attributes_for :colors, allow_destroy: true
sample_color.rb
class SampleColor
belongs_to :car_model
color.rb
class Color
belongs_to :car
accepts_nested_attributes_for :finishes, allow_destroy: true
_form (für das Hinzufügen von Farben)
<%= form_for @car do |f| %>
<%= f.fields_for 'car[color_attributes][]', @color, index: nil do |f| %>
<label class="form-label dk-aqua">Colors for <%= @car.car_name %></label><br>
<div class="row ">
<%= hidden_field_tag "car[color_ids][]", nil %>
<% @sample_colors.each do |sample_color| %>
<%= check_box_tag "car[color_ids][]", "#{sample_color.id}" %>
<%= hidden_field_tag "car[color_value_ones][]", "#{sample_color.value_one}" %>
<%= hidden_field_tag "car[color_value_twos][]", "#{sample_color.value_two}" %>
<%= label_tag :value_one, "#{sample_color.value_one}" %> <br>
<% end %>
</div>
<% end %>
<%= f.submit 'SAVE CHANGES', :class => 'btn btn-green btn-lg btn-block' %>
<%end%>
cars_controller.rb
def update
@color = Color.new(color_params)
@car.color_ids = params[:car][:color_ids] || []
@car.color_value_ones = params[:car][:color_value_ones] || []
@car.color_value_twos = params[:car][:color_value_twos] || []
respond_to do |format|
if @car.update(car_params)
format.html { redirect_to @car, notice: 'Car was successfully updated.' }
format.json { render :show, status: :ok, location: @car }
else
format.html { render :edit }
format.json { render json: @car.errors, status: :unprocessable_entity }
end
end
end
def car_params
params.require(:car).permit(:id, :car_name, :car_model_id, colors_attributes: [:id, {:color_ids => [], :color_value_ones => [], :color_value_twos => []}, :value_one, :value_two,
finishes_attributes: [:id, :value_one] ] )
end
def color_params
params.require(:color).permit(:id, {:color_ids => [], :color_value_ones => [], :color_value_twos => []}, :value_one, :value_two,
finishes_attributes: [:id, :value_one] )
end
Bitte lassen Sie mich wissen, wie ich eine Frage verbessern kann. Ich bin neulich und ich möchte Stackoverflow nicht mit schlechten Fragen verstopfen, aber manchmal weiß ich nicht genug, um zu wissen, warum es schlecht ist. Ich habe eine Beispiel-App erstellt, um so gründlich wie möglich zu dieser Frage zu sein ... die mich eine Woche lang verfolgt hat. – NothingToSeeHere