轨道嵌套的资源和路由初始化资源
问题描述:
我有一个正常的轨道使用嵌套窗体/资源和路由时,方式的问题。轨道嵌套的资源和路由初始化资源
我有两个表,词汇和定义...
词有很多定义,但我不创建一个Word,直到它至少有一个定义。
模型和控制器端的一切工作,但我无法弄清楚如何处理表单助手。
<%= semantic_form_for [@word, @definition] do |f| %>
这个工作完美,但只有在@word实际存在并且不是新的UNSAVED记录。 IE中的控制器我正在做一个find_or_initialize_by
呼吁Word然后建立一个定义。
<%= semantic_form_for [:word, @definition] do |f| %>
这个词,但只有当这个词不存在。 IE浏览器,如果我尝试使用这种结构编辑我得到一个奇怪的网址(这是行不通的)。 words/12345/definition/12345
我尝试使用url_for
帮手,但也有类似的结果如上...
任何其他的想法?
答
Mongoid未初始化嵌入式文件默认。你需要建立自己他们最有可能的回调在Word
型号:
after_initialize :build_definition
def build_definition
self.definitions.build unless self.definitions.any?
end
答
如果你想留下来CRUD,并允许定义单词之前创建的,则必须重复路线的定义,一个字内,一家在外面,所以你可以做:
<%= semantic_form_for [@definition] do |f| %>
它的工作原理,但我后来发现它会导致很多其他问题了。我不能再使用@ word.definitions.blank了? – holden 2012-02-27 18:22:27