2011-09-06 56 views
0

如何从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 
+0

考虑到你的控制器的外观,你应该使用多种形式。看来你一次只能在一个人身上工作?在编辑时,您可以通过*相同的ID *找到4种不同的模型。在创建时,如果* any * save,您将重定向到索引。显然你想独立操作它们。为每个资源使用控制器和表单。 – numbers1311407

+0

这意味着我不能以一种形式做到这一点? –

+0

根据您在下面发布的图片,看起来您确实需要多个表单,每个手风琴选项卡上都有一个。 – numbers1311407

回答

0

你可以从一种形式管理的几种模式。 (但是,如果你想按照你的解释去做,我认为应用程序架构错过了某些东西)。你不应该需要几个控制器 - 使用一个。例如:只需在new操作中创建模型的新实例,然后将其验证并保存在create操作中。与edit/update动作相同。 我想你也应该使用form_tag而不是form_for因为不会有模型来处理。

+0

谢谢,但是在编辑中遇到了另一个问题。当我试图编辑表A中的记录3时,其他表中的记录3都显示给我。我该如何避免?你可以在最新帖子中看到我的编辑功能 –

+0

不好意思?但我不明白你的意思是'所有来自另一张桌子的记录3都显示给我'。他们肯定会。因为你在编辑它们。我认为你应该改变你的应用程序的行为。也许你应该在单独的控制器和单独的视图中创建/更新模型 – bor1s

+0

这正是我的问题。我的Scnario是:我的项目是关于德语(保存德语单词)。我有三个表格(用于南门的词,副词副词,副词用于副词和副词副词)当然在我的scnario中(这不是最佳的),表格之间没有关系。我有一个表格,用户可以添加副词或形容词或....(我使用手风琴,每个手风琴都有一个标签),我想给用户编辑一个页面的可能性....你是什么意思?我可以实施我的Scnario吗?你也可以看到:http://babakbsn.persiangig.com/UI11.png和... –

相关问题