Hoe koppel ik gegevens aan elkaar met behulp van een join-tabel?

Ik heb drie modellen: Les, Situatie, Lot (join-tabel). In deze app kan een situatie veel lessen hebben en een les kan tot meerdere situaties behoren.

Ik zou in wezen willen dat de tafels er zo uitzien.

Situatie

id ..... naam ..................... beschrijving

1 ..... Eten bestellen ... Je gaat een restaurant binnen en bestelt eten.

2 ..... Stel jezelf voor. Je ontmoet voor de eerste keer iemand en je stelt jezelf voor.

Les

id.....name............description..............Les_text

1 ... eten bestellen .... eten bestellen..Blah bla bla, dit is hoe je eten bestelt.

2 ... Bel de ober. Hoe de ober te bellen Bla bla bla, zo noem je de ober

3 Betaal voor eten Hoe betaal je voor eten Bla bla bla, dit is hoe je betaalt.

4 Begroet een persoon Hoe iemand te groeten Bla bla bla, dit is hoe je een persoon begroet.

5 Stel een vraag Hoe een vraag te stellen Bla bla bla, dit is hoe je een vraag stelt.

Lot

Situatie_id Les_id required

1 ................. 1 ............... ja

1 2 ................. ............... ja

1 ................. 3 ............... geen

2 ................. 3 ............... ja

2 ................. 4 ............... ja

2 5 ................. ............... ja

I have the tables set up but I'm not sure how I would associate a Les to a Situatie.

Dit is hoe mijn applicatie er momenteel uitziet

Situaties controller

class SituatiesController < ApplicationController

  def index
    @Situaties = Situatie.all
  end

  def new
    @Situatie = Situatie.new
  end

  def create
    @Situatie = Situatie.new(params[:Situatie])
    respond_to do |format|
      if @Situatie.save
        format.html { redirect_to @Situatie }
      end
    end
  end

  def show
    @Situatie = Situatie.find(params[:id])
    @Les = @Situatie.Less.new
  end

  def edit
    @Situatie = Situatie.find(params[:id])
  end

  def update
    @Situatie = Situatie.find(params[:id])
    respond_to do |format|
      if @Situatie.update_attributes(params[:Situatie])
        format.html { redirect_to @Situatie }
      end
    end
  end

  def destroy
    @Situatie = Situatie.find(params[:id])
    @Situatie.destroy
    respond_to do |format|
      format.html { redirect_to Situaties_path }
    end
  end
end

Less controller

class LessController < ApplicationController
  def index
    @Less = Les.all
  end

  def new
    @Les = Les.new
  end

  def create
    @Les = Les.new(params[:Les])
    respond_to do |format|
      if @Les.save
        format.html { redirect_to @Les }
      end
    end
  end

  def show
    @Les = Les.find(params[:id])
  end

  def edit
    @Les = Les.find(params[:id])
  end

  def update
    @Les = Les.find(params[:id])
    respond_to do |format|
      if @Les.update_attributes(params[:Les])
        format.html { redirect_to @Les }
      end
    end
  end

  def destroy
    @Les = Les.find(params[:id])
    @Les.destroy
    respond_to do |format|
      format.html { redirect_to Less_path }
    end
  end
end

routes

root :to => 'Situaties#index'

  resources :Situaties do
    resources :Less
  end
  resources :difficulties

Situatie.rb

class Situatie < ActiveRecord::Base
  attr_accessible :name, :description

  has_many :Lots
  has_many :Less, :through => :Lots
end

Les.rb

class Les < ActiveRecord::Base
  attr_accessible :name, :description, :difficulty_id, :Les_text

  has_many :Lots
  has_many :Situaties, :through => :Lots
end

Lot.rb

class Lot < ActiveRecord::Base

  belongs_to :Les
  belongs_to :Situatie
end

Bedankt voor de hulp! en het spijt me echt van de rommelige opmaak.

0
Ik weet niet zeker hoe ik de vorm moet maken waarmee ik kan zeggen dat een bepaalde les bij een situatie hoort. Ik weet hoe ik nieuwe lessen en situaties moet creëren, maar ik weet niet zeker hoe ik ze kan associëren met Fate als mijn join-tabel. Ik ben gewoon in het algemeen in de war omdat ik nog nooit een hoop heb gemaakt: eerder door associatie. Bedankt voor het reageren!
toegevoegd de auteur Daniel Sun Yang, de bron
wat werkt er precies niet? Lijkt erop dat je hebt veel veranderd door de juiste associatie.
toegevoegd de auteur Stpn, de bron
Als het helpt, accepteert u het antwoord alstublieft?
toegevoegd de auteur Stpn, de bron

1 antwoord

Dus als je een nieuwe situatie aan het creëren bent en ook nieuwe lessen wilt maken die eraan verbonden zijn ..

app/modellen/situation.rb

attr_accessible :name, :description, :difficulty_id, :lesson_text, :lessons_attributes             
accepts_nested_attributes_for :lessons

app/controllers/situations_controller.rb

def new
 @situation = Situation.new
 2.times do{@situation.lessons.build}

  respond_to do |format|
   format.html 
  end
 end 

app/views/lessen/_form.html.erb

<% form_for @situation do |f| %>

  <%= f.text_field :name %>
  <%= f.text_field :description %>


  <%  f.fields_for :situations do |lesson_field| %>  
   <%= lesson_field.text_field :name %>
   <%= lesson_field.text_field :lesson_text %>
  <%  end %>

 <%= f.submit %>
<% end %> 

In essentie heeft u een geneste vorm nodig (er zijn voldoende voorbeelden). Ik heb dit van de iPhone getypt, ik hoop dat het werkt)

0
toegevoegd
is het gelukt?
toegevoegd de auteur Stpn, de bron