0

レッスン、状況、運命(テーブルに参加)の3つのモデルがあります。このアプリでは、1 つのシチュエーションに多くのレッスンを含めることができ、1 つのレッスンを複数のシチュエーションに所属させることができます。

私は基本的にテーブルをこのように見せたいと思っています。

状況

id.....名前.....................説明

1.....食べ物の注文......レストランに行き、食べ物を注文します。

2.....自己紹介 初対面の人に自己紹介をします。

レッスン

id.....名前.....................説明........lesson_text

1......食べ物を注文する....食べ物を注文する方法..何とか何とか何とか、これは食べ物を注文する方法です.

2......ウェイターに電話する

3 食費の支払い 食費の支払い方法 何とか何とか、これが食費の支払い方法です。

4 人に挨拶する 人に挨拶する方法 何とか何とか、これは人に挨拶する方法です。

5 質問する 質問の仕方 何とか何とか、これが質問の仕方です。

運命

シチュエーション ID レッスン ID 必須

1.................1.はい

1.................2.はい

1.................3.いいえ

2.................3................はい

2........4................はい

2........5................はい

テーブルをセットアップしましたが、レッスンを状況に関連付ける方法がわかりません。

これは私のアプリケーションが現在どのように見えるかです

シチュエーション・コントローラー

class SituationsController < ApplicationController

  def index
    @situations = Situation.all
  end

  def new
    @situation = Situation.new
  end

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

  def show
    @situation = Situation.find(params[:id])
    @lesson = @situation.lessons.new
  end

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

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

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

レッスンコントローラー

class LessonsController < ApplicationController
  def index
    @lessons = Lesson.all
  end

  def new
    @lesson = Lesson.new
  end

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

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

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

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

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

ルート

root :to => 'situations#index'

  resources :situations do
    resources :lessons
  end
  resources :difficulties

シチュエーション.rb

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

  has_many :fates
  has_many :lessons, :through => :fates
end

レッスン.rb

class Lesson < ActiveRecord::Base
  attr_accessible :name, :description, :difficulty_id, :lesson_text

  has_many :fates
  has_many :situations, :through => :fates
end

Fate.rb

class Fate < ActiveRecord::Base

  belongs_to :lesson
  belongs_to :situation
end

助けてくれてありがとう!乱雑なフォーマットについては本当に申し訳ありません。

4

1 に答える 1

0

したがって、新しい状況を作成していて、それに関連付けられる新しいレッスンも作成したい場合..

アプリ/モデル/状況.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 

アプリ/ビュー/レッスン/_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 %> 

基本的に、ネストされたフォームが必要です (例はたくさんあります)。私はこれをiPhoneから入力しました。うまくいくことを願っています)

于 2012-06-24T02:29:23.050 に答える