使用嵌套表单/资源和路由时,我遇到了rails正常运行的问题。
我有两个表,单词和定义......
单词有很多定义,但是在它至少有一个定义之前我不创建Word。
模型和控制器端的所有内容都有效,但我无法弄清楚如何处理表单助手。
<%= semantic_form_for [@word, @definition] do |f| %>
这完美有效但只有@word实际存在并且不是新的UNSAVED记录。控制器中的IE我正在对Word进行find_or_initialize_by
调用,然后构建一个定义。
<%= semantic_form_for [:word, @definition] do |f| %>
这句话,但只有在这个词不存在的情况下。 IE如果我尝试使用这种结构进行编辑,我会得到一个奇怪的网址(这不起作用)。 words/12345/definition/12345
我尝试使用url_for
帮助器,但结果与上面类似......
还有其他想法吗?
答案 0 :(得分:1)
默认情况下,Mongoid不会初始化嵌入的文档。您需要在Word
模型中使用回调最有可能自己构建它们:
after_initialize :build_definition
def build_definition
self.definitions.build unless self.definitions.any?
end
答案 1 :(得分:0)
如果你想保留CRUD并允许在单词之前创建定义,你必须复制定义的路由,一个在单词内,一个在外面,所以你可以这样做:
<%= semantic_form_for [@definition] do |f| %>