0

我有一個正常的軌道使用嵌套窗體/資源和路由時,方式的問題。軌道嵌套的資源和路由初始化資源

我有兩個表,詞彙和定義...

詞有很多定義,但我不創建一個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幫手,但也有類似的結果如上...

任何其他的想法?

回答

1

Mongoid未初始化嵌入式文件默認。你需要建立自己他們最有可能的回調在Word型號:

after_initialize :build_definition 

def build_definition 
    self.definitions.build unless self.definitions.any? 
end 
+0

它的工作原理,但我後來發現它會導致很多其他問題了。我不能再使用@ word.definitions.blank了? – holden 2012-02-27 18:22:27

0

如果你想留下來CRUD,並允許定義單詞之前創建的,則必須重複路線的定義,一個字內,一家在外面,所以你可以做:

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