2012-11-15 54 views
0

我希望我的應用程序讓用戶在幾個地址之間進行選擇或創建一個。地址將被存儲在合同對象(Contract.adresse_id)中。窗體來選擇一個實例

生成顯示錶單的頁面的控制器生成@user變量。 目標是要麼將現有地址的id傳遞給下一個控制器,要麼傳遞新地址的參數(經典嵌套)。此頁面的唯一目標是設置地址,不應修改其他合同字段。

模型合同有一個address_id字段。我希望有一個單選按鈕,允許選擇之間:

  • @user.address # it is an address id
  • @user.secondary_adress # address id too
  • 和一個空的表單,允許創建自己的地址(經典嵌套)

我想這應該是像:

<%= form_for contract do |f|%>   
<% f.label :address%> 
<% end%> 

但是然後我不知道該怎麼做。我怎樣才能做一個允許選擇2個已存在的地址和第三個地址之間的表單?

回答

0

你可以讓你的第三個收音機選項的'id'爲0或-1。然後在下一個控制器中查找地址時,如果該ID是您的假非ID,則您將創建一個新地址。您可以在下一個控制器的任何一種情況下使用相同的視圖,方法是根據地址是否爲新來設置該表單的url。例如:

- if @address.new_record? 
    - form_url = [create path] 
- else 
    - form_url = [update path] 
... 
= form_for(@address, :url => form_url) do |f| 

(這是在HAML代替ERB,很明顯,我強烈建議使開關)

0

我的問題是在第2部分:

1)選擇現有的地址,把它

:在contrat 2)在同一個頁面

對於1)我這樣做增加了可能性,以創建一個新地址,而不是現有的

它簡單地提交所選的現有地址

2)而不是使一個複雜的單一的形式,允許在兩者之間進行選擇的的id,我做了第二種形式具有嵌套新地址。這意味着我在前一個控制器中創建了一個新地址,但如果我不使用它,這不是問題。

最後,我的頁面有兩種不同的形式提交不同的數據,但它更容易做到。