关于多个模型和一个控制器的编辑问题

时间:2011-09-02 14:03:32

标签: ruby-on-rails crud

我有三个模型(单词,Adjectiv,副词)和一个控制器(单词)管理这些模型。我只有一个表单,用户可以添加副词,Adjectiv或单词。 我的编辑功能:

def edit
        @word=Word.find(params[:id])
        @adjektiv=Adjektiv.find(params[:id])
        @adverb =Adverb.find(params[:id])
  end 

例如,当我想编辑一个副词记录(id = 1)时,另一个adjectiv记录和id = 1的Word出现在Textboxes中。我想只观看副词的第一个记录 我怎样才能做到这一点? 谢谢

2 个答案:

答案 0 :(得分:3)

这看起来是使用STI(单表继承)的完美情况,因为附属词和副词也是单词。要实现此目的,您需要在单词表中使用名为type的字符串字段。然后你可以这样做:

def Word < ActiveRecord::Base
end

def Adjektiv < Word
end

def Adverb < Word
end

然后在你的控制器中:

def edit
  @word=Word.find(params[:id])   
end 

答案 1 :(得分:1)

如果您只有一个用户表单但有多个模型,则表示您将多个模型与单个控制器关联。因此,建议采用嵌套模型形式方法。

请在Nest Form-Model上按照Ryan Bates的excellent railscast进行操作。

该链接用于railscast的第1部分,您可以在同一网站上找到后续的railscast。

这种方法可以使您的代码更清晰,更高效,更易于维护。

感谢。