J'ai essayé de faire mon a et appartient à beaucoup de relation au travail, en suivant les guides Rails et tout ce que j'ai pu trouver en ligne, mais ils ne se montreront pas .. Quand je enregistrer mon formulaire ses seuls INSERTS dans le modèle Pin, il n'insère aucune relation. Si j'ajoute la relation manuellement via le terminal comme ceci:A plusieurs cases à cocher ne sauvera pas Rails 4
p = Pin.new
p.minors = [1,2]
p.save
Il fonctionne, mais ma forme qui ressemble à ceci (iam à l'aide de rails 4, donc collections youpi), il ne sauve pas les relations (il sauve la broche très bien)
new.html.erb
<%= collection_check_boxes(:minor_ids, :minor_ids, Minor.all, :id, :name) %>
<%= collection_check_boxes(:competence_ids, :competence_ids, Competence.all, :id, :name) %>
pinscontroller.rb
class PinsController < ApplicationController
def create
@pin = Pin.new(pin_params)
@pin.user_id = current_user.id
if @pin.save
redirect_to pin_path(@pin)
end
end
def new
@pin = Pin.new()
end
def show
@pin = Pin.find(params[:id])
end
private
def pin_params
params.require(:pin).permit(:title, :name, :url, { :minor_ids => [] }, { :competence_ids => [] },)
end
fin
et mon modèle Pin.rb
class Pin < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :minors
has_and_belongs_to_many :competences
end
Minor.rb
class Minor < ActiveRecord::Base
has_and_belongs_to_many :pins
end
Competence.rb
class Competence < ActiveRecord::Base
has_and_belongs_to_many :pins
end
pin/show.html.erb
Ceci est la façon dont je tente de vérifier si les relations ont traversé. Ils reviennent tous vides et 0, sauf ceux que j'ai fait à travers la console.
<%= @pin.minors.count.inspect %>
<%= @pin.competences.count.inspect %>
<% if [email protected]? %>
<%= @pin.minors.each do |minor| %>
<%= minor.name %>
<% end %>
<% end %>
<% if [email protected]? %>
<%= @pin.competences.each do |comp| %>
<%= comp.name %>
<% end %>
<% end %>
schema.rb
create_table "competences", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "pin_id"
end
create_table "competences_pins", force: true do |t|
t.integer "pin_id"
t.integer "competence_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "minors", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "pin_id"
end
create_table "minors_pins", force: true do |t|
t.integer "pin_id"
t.integer "minor_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "pins", force: true do |t|
t.string "title"
t.string "url"
t.string "image"
t.string "username"
t.integer "views"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
end
Alors, suis-je manque une étape? Jusqu'à présent, j'ai tout essayé, mais les minors_pins et les competences_pins les tables restent vides, toute l'aide et la perspicacité que je peux obtenir!