2012-11-15 38 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,我做了第二种形式具有嵌套新地址。这意味着我在前一个控制器中创建了一个新地址,但如果我不使用它,这不是问题。

最后,我的页面有两种不同的形式提交不同的数据,但它更容易做到。