是否可以从Rails表单管理多个不相关的模型?

时间:2011-09-06 08:38:18

标签: ruby-on-rails

如何从Rails表单管理多个不相关的模型?

我是否只有一个控制器适用于所有型号或每个型号一个控制器?

这是我的控制者:

class WordsController < ApplicationController
  def new
         @word=Word.new
         @verb=Verb.new
         @adjektiv=Adjektiv.new
         @adverb=Adverb.new
  end
  def create
    @word=Word.create(params[:word])
    @verb=Verb.create(params[:verb])
    @adjektiv=Adjektiv.create(params[:adjektiv])
    @adverb=Adverb.create(params[:adverb])

    if @word.save || @verb.save || @adjektiv ||  @adverb
      redirect_to :action => 'index'
    else
      render :action => 'new'
    end
  end
  def index
        @word=Word.find(:all)
        @verb=Verb.find(:all)
        @adjektiv=Adjektiv.find(:all)
        @adverb =Adverb.find(:all)
  end
  def edit
        @word=Word.find(params[:id])
        @verb=Verb.find(params[:id])
        @adjektiv=Adjektiv.find(params[:id])
        @adverb =Adverb.find(params[:id])
  end
  def update
    @word =Word.find(params[:id])
    if @word.update_attributes(params[:word])  ||   @verb.update_attributes(params[:verb])  || @adjektiv.update_attributes(params[:adjektiv]) || @adverb.update_attributes(params[:adverb])
      redirect_to :action => 'index'
    else
      redirect_to :action => 'edit'
    end
  end
end

1 个答案:

答案 0 :(得分:0)

您可以从一个表单管理多个模型。 (但我认为如果你想按照你的解释那样使用应用程序架构中的某些东西)。你不应该需要几个控制器 - 使用一个。例如:只需在new操作中创建新模型实例,验证并将其保存在create操作中。 edit / update次操作相同。 我认为你也应该使用form_tag代替form_for因为没有模型需要处理。