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