新手问题 多级表单的验证问题

luliangshu · 2013年10月17日 · 2252 次阅读

我有一下面一段 form

<figure class="edit_element edit_header">
    <figcaption>Website Header</figcaption>
    <a class="close" href="#"></a>
    <%= form_for @node, :remote => true do |node_form|%>
        <%= node_form.fields_for :header do |f| %>
            <div class="content">
                <ul class="form_list">
                    <li>
                        <%= f.label :headerFormTitle,"Website name" %>
                        <%= f.text_field :headerFormTitle, class: "input_text" %>
                    </li>
                    <li>
                        <%= f.label :headerFormDescription,"Website slogan" %>
                        <%= f.text_area :headerFormDescription %>
                    </li>
                </ul>
                <div class="legend clearfix"><i class="left_line"></i>Or<i class="right_line"></i></div>
                <ul class="image_list">
                    <li class="clearfix">
                        <label>header image</label>
                        <div class="fl">
                            <div class="samll_image"><%= image_tag "material/sample_img1.jpg"%></div>
                            <!-- <span class="button add_button">choose image</span> -->
                        </div>  
                    </li>
                </ul>
            </div>
            <div class="save">
                <%= f.submit class: "button save_button", value: "Done"%>
            </div>
        <% end %>
    <% end %>
</figure>

只有 node 这个模型 而且里面所有的属性都不存在 都是我构建的虚拟属性

主要是关于验证问题 假如我没有<%= node_form.fields_for :header do |f| %> 这个来做多级嵌套 只有<%= form_for @node, :remote => true do |node_form|%>那么我的验证可以这样写

class Node < ActiveRecord::Base
    attr_accessor :header,:headerFormTitle,:headerFormDescription :direction, :position

    validates :headerFormTitle, length: { minimum: 2 }
    validates :headerFormDescription, length: { minimum: 2 }
end

这样验证可以生效 因为 form 构建出来 类似

node[headerFormTitle]

而现在 我利用的多层嵌套后构建出来的表单 类似

node[header][headerFormTitle]

这样验证就失效了。我该如何来在 model 去验证这几个表单

后来 我又创建了一个 header 模型 还使用了类似 accepts_nested_attributes_for 来创建关联 但它似乎提示我 缺少一个叫 header 的表

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号