在rails中的产品表单中添加类别字段

时间:2010-01-07 14:16:27

标签: ruby-on-rails ajax forms

我有产品和类别模型,我想要做的是在添加新产品表单中添加类别字段(我希望它以ajax格式更新)

我的表格是这样的:

<fieldset>
    <legend>
        <%= @form_title %>
    </legend>
    <%= error_messages_for 'theme' , :header_message => "موارد زیر دارای اشکال می باشند، لطفا دوباره بررسی نمایید :" , :message => nil %>
    <ol>
        <% form_for :template , @theme do |t| %>
        <li>
            <%= label :theme , :نام %>
            <%= t.text_field :name %>
        </li>
        <li>
            <%= label :theme , :نام_انگلیسی %>
            <%= t.text_field :en_name %>
        </li>
        <li>
            <%= label :theme , :قیمت %>
            <%= t.text_field :price %>
        </li>
        <li>
            <%= label :theme , :قیمت_ویژه %>
            <%= t.text_field :unique_price %>
        </li>
        <li>
            <%= label :theme , :توضیحات %>
            <%= t.text_area :description %>
        </li>
        <li>
            <%= label :theme , :دسته %>
            <% for category in Category.find(:all) %>
            <%= check_box_tag "template[category_ids][]" , category.id , @theme.categories.include?(category) %>
            <span class="category_name"><%= category.name %></span>
            <br/>
            <% end %>
        </li>
        <p id="template_cat">
        </p>
        <p class="cat">
            <% fields_for "template[cat_attributes][]" , @theme do |cat_form| -%>
            <li>
                <%= cat_form.text_field :name %> اضافه کردن دسته جدید
            </li>
            <% end -%>
        </p>
        <li>
            <%= label :theme , :عکس_قالب %>
            <%= t.file_field :photo %>
        </li>
        <li>
            <%= submit_tag "#{@form_title}" %>
        </li>
        <% end %>
    </ol>
</fieldset>
带有cat class name的p标签中的

是添加新类别的代码

<p class="cat">
    <% fields_for "template[cat_attributes][]" , @theme do |cat_form| -%>
    <li>
        <%= cat_form.text_field :name %> اضافه کردن دسته جدید
    </li>
    <% end -%>
</p>

如果我提交表单,它会以正常方式工作,但我希望添加此功能以添加新类别而无需先提交表单。我怎么能这样做

1 个答案:

答案 0 :(得分:1)

这是不可能的,因为fields_for方法不会创建新表单,但是 只会在主窗体中添加新的<input>元素,例如模板表单

所以解决方法是提取<%= cat_form.text_field :name %> اضافه کردن دسته جدید 到新表单,并且由于您希望它使用Ajax,您必须按照the Rails API

中的描述创建remote_form_for