Ruby on rails 3 rails嵌套资源和初始化资源的路由
我对rails在使用嵌套表单/资源和路由时的正常操作方式有一个问题 我有两个表格,单词和定义 单词有很多定义,但我不会创建一个单词,直到它至少有一个定义 模型和控制器端的一切工作正常,但我不知道如何处理表单助手Ruby on rails 3 rails嵌套资源和初始化资源的路由,ruby-on-rails-3,mongoid,form-for,nested-routes,nested-form-for,Ruby On Rails 3,Mongoid,Form For,Nested Routes,Nested Form For,我对rails在使用嵌套表单/资源和路由时的正常操作方式有一个问题 我有两个表格,单词和定义 单词有很多定义,但我不会创建一个单词,直到它至少有一个定义 模型和控制器端的一切工作正常,但我不知道如何处理表单助手 <%= semantic_form_for [@word, @definition] do |f| %> 只有在这个词不存在的情况下,这个词才会出现。也就是说,如果我尝试使用这种结构进行编辑,我会得到一个奇怪的url(这不起作用)单词/12345/定义/12345 我尝试使
<%= semantic_form_for [@word, @definition] do |f| %>
只有在这个词不存在的情况下,这个词才会出现。也就是说,如果我尝试使用这种结构进行编辑,我会得到一个奇怪的url(这不起作用)<代码>单词/12345/定义/12345
我尝试使用url\u作为
helper,但得到了与上面类似的结果
还有其他想法吗?如果你想保持原样,允许在单词之前创建定义,你必须复制定义的路径,一个在单词内部,一个在单词外部,这样你就可以:
<%= semantic_form_for [@definition] do |f| %>
默认情况下,Mongoid不会初始化嵌入文档。您需要自己构建它们,最有可能的是在您的
Word
模型中使用回调:
after_initialize :build_definition
def build_definition
self.definitions.build unless self.definitions.any?
end
它是有效的,但我后来注意到它也会导致许多其他问题。我不能再使用@word.definitions.blank了?
after_initialize :build_definition
def build_definition
self.definitions.build unless self.definitions.any?
end