0

我有三个模型:Lesson、Situation、Fate(join table)。在这个应用程序中,一个情境可以有很多课,一个课可以属于多个情境。

我基本上希望表格看起来像这样。

情况

id.....名字............描述

1 ......订购食物......您进入餐厅并订购食物。

2.....自我介绍。你第一次见到某人并自我介绍。

id.......名字............描述............lesson_text

1......订购食物....如何订购食物..等等等等,这就是您订购食物的方式。

2......叫服务员。怎么叫服务员Blah blah blah,这就是你叫服务员的方式

3 支付食物费用 如何支付食物费用等等等等,这就是你支付食物费用的方式。

4 问候一个人 如何问候一个人 Blah blah blah,这就是你问候一个人的方式。

5 问一个问题 如何问一个问题 Blah blah blah,这就是你提问的方式。

命运

情况_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

命运.rb

class Fate < ActiveRecord::Base

  belongs_to :lesson
  belongs_to :situation
end

谢谢您的帮助!对于混乱的格式,我真的很抱歉。

4

1 回答 1

0

因此,如果您正在创建一个新情况,并且还想创建与之相关的新课程..

应用程序/模型/situation.rb

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

应用程序/控制器/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 回答