2013-12-23 123 views
0

我有一個帶有belongs_to供應商的開支的Rails應用程序。窗體中的Rails部分窗體

當用戶添加新的費用時,他們可能需要添加新的供應商。

我想我可以只是添加一個按鈕和一個供應商的部分費用形式。

像這樣:

<%= simple_form_for @expense, :html => {:class => 'form-horizontal'} do |f| %> 
    <div class="span5"> 
    <a data-toggle="modal" href="#vendorform"> 
    <p class="pull-right btn btn-primary btn-mini">New Vendor</p></a> 
    <%= render :partial => "vendors/vendorform" %> 
    </a> 
    <%= f.association :vendor, :label_method => :vendor_name, :label => 'Vendor', collection: Vendor.order('vendor_name ASC') %> 

的_vendorform.html.erb看起來是這樣的:

<div id="vendorform" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="vendorformLabel" aria-hidden="true"> 
<div class="modal-header"> 
<a class="close" data-dismiss="modal">&#215;</a> 
<h4 id="vendorformLabel">Add Vendor</h4> 
</div> 
<div class="modal-body"> 
<%= simple_form_for Vendor.new do |f| %> 
     (bunch of fields) 
    </div> 
    <div class="modal-footer"> 
     <%= f.submit 'Save Vendor', :class => 'btn btn-mini btn-primary' %> 
     <a class="btn btn-mini" data-dismiss="modal" href="#">Close</a> 
<% end %> 
</div> 
</div> 

這部分顯示了確定。但是,供應商記錄不會被創建。 部分的提交實際上以某種方式觸發提交給費用。頁面會返回所有必需的費用字段爲紅色。

我認爲這是張貼到費用控制器當供應商部分按下f.submit按下!

我需要費用控制器中的東西嗎?

或者還有更好的方法嗎?

感謝您的幫助!

+0

您如何通過單擊供應商表單上的提交按鈕或單擊費用表單上的提交按鈕來創建供應商對象? – vee

+0

單擊部分供應商表單中的按鈕。但是,它看起來像張貼到費用控制器 - 不知道爲什麼? – Reddirt

+0

基本上你已經嵌套了'html'表單元素。你不應該那樣做。您應該移動另一個部分中的字段,然後在'fields_for'中渲染該部分,以便也可以自動創建關聯。希望這是有道理的! – vee

回答

0

您確定供應商部分與費用表單在相同的文件夾中嗎?如果你不應該有

<%= render :partial => "folder/vendorform" %> 
+0

在這種情況下,我不確定是否需要:部分。我認爲你可以只用<%= render「folder/vendorform」%> –

+0

我還會在費用表單中看到兩個關閉錨定標記。也許嘗試刪除其中之一。 –

+0

兩種表格都在相同的費用文件夾中。也許_vendorform.html.erb應該在供應商文件夾中 - 我會嘗試。 – Reddirt

0

當你嵌套屬性,你應該使用simple_fields_for方法,幫助管理協會。然後,刪除供應商表單的提交按鈕,並將其添加到費用表單中。因此,供應商表格將是 -