Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 rails嵌套资源和初始化资源的路由_Ruby On Rails 3_Mongoid_Form For_Nested Routes_Nested Form For - Fatal编程技术网

Ruby on rails 3 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 我尝试使

我对rails在使用嵌套表单/资源和路由时的正常操作方式有一个问题

我有两个表格,单词和定义

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

模型和控制器端的一切工作正常,但我不知道如何处理表单助手

<%= 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