我有产品和类别模型,我想要做的是在添加新产品表单中添加类别字段(我希望它以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>
如果我提交表单,它会以正常方式工作,但我希望添加此功能以添加新类别而无需先提交表单。我怎么能这样做
答案 0 :(得分:1)
这是不可能的,因为fields_for
方法不会创建新表单,但是
只会在主窗体中添加新的<input>
元素,例如模板表单
所以解决方法是提取<%= cat_form.text_field :name %> اضافه کردن دسته جدید
到新表单,并且由于您希望它使用Ajax,您必须按照the Rails API
remote_form_for