errore:aggiunta di attributi nidificati con caselle di controllo a rotaie 4 con assegnazione di massa
param is missing or the value is empty: color
Sto facendo una forma in cui posso aggiungere attributi nidificati a un record di genitore e voglio aggiungere loro attraverso caselle di controllo. Ho il modello genitore "Car" e il modello figlio "Colors" ... ma voglio iniziare con alcuni "colori" predefiniti ... quindi ho anche il modello "Sample_Colors", che cambia in base a "Car_Models".
Sto cercando di aggiungere più "Colori" a un associato "Car" utilizzando le caselle di controllo ... Non voglio un rapporto HABTM con "Sample_Colors" e "Colori", come ho bisogno "Colori" record di essere modificabile e non solo una tabella di join. L'ho fatto usando HABTM e quindi non capisco perché non riesco a creare un record non-join-table in modo simile.
Dove Sto avendo difficoltà è con le assegnazioni di massa ... neanche genera l'errore sopra o non riesce a trovare il colors_id ...
per chiarire quello che sto cercando di fare:
le caselle di controllo devono
1. Creare un nuovo record "Color" (@ color.new) che è associato con il record @car genitore
2. Impostare la colonna "value_one" del record @ color.new a il valore sample_color.value_one
3. Impostare la colonna "value_two" del record @ color.new sul valore sample_color.value_two
4. La quantità di caselle di controllo create == i @sample_colors iterati.
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 (per i colori che aggiungono)
<%= 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
Per favore fatemi sapere come posso migliorare una domanda. Sono newish e non voglio bloccare Stackoverflow con domande scarse, ma a volte non ne so abbastanza per sapere perché è male. Ho creato un'app campione per essere il più esauriente possibile su questa domanda ... che mi ha perseguitato per una settimana. – NothingToSeeHere