我有三个模型(单词,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中。我想只观看副词的第一个记录 我怎样才能做到这一点? 谢谢
答案 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。
这种方法可以使您的代码更清晰,更高效,更易于维护。
感谢。