0

在使用嵌套表单/资源和路由时,rails 的正常运行方式存在问题。

我有两张表,单词和定义......

词有很多定义,但我不会创建一个词,直到它至少有一个定义。

模型和控制器端的一切都有效,但我不知道如何处理表单助手。

<%= semantic_form_for [@word, @definition] do |f| %>

这非常有效,但前提是 @word 确实存在并且不是新的 UNSAVED 记录。控制器中的 IE 我正在find_or_initialize_by调用 Word,然后建立一个定义。

<%= semantic_form_for [:word, @definition] do |f| %>

这个词,但前提是这个词不存在。IE 如果我尝试使用这种结构进行编辑,我会得到一个奇怪的 url(这不起作用)。 words/12345/definition/12345

我尝试使用url_for帮助程序,但结果与上述类似......

还有其他想法吗?

4

2 回答 2

1

默认情况下,Mongoid 不会初始化嵌入文档。您最有可能需要在模型中使用回调自己构建它们Word

after_initialize :build_definition

def build_definition
  self.definitions.build unless self.definitions.any?
end
于 2012-02-25T02:50:50.563 回答
0

如果您想保留 CRUD 并允许在单词之前创建定义,则必须复制定义的路由,一个在单词内部,一个在单词外部,因此您可以这样做:

<%= semantic_form_for [@definition] do |f| %>
于 2012-02-23T14:55:13.113 回答