2014-09-29 76 views
2

我想在Rails应用程序中构建sales_opportunity。 sales_opportunity属于用户,也属于公司。代码可以正常工作,并且表单允许用户根据数据库中预定义的公司集合选择公司来链接sales_opportunity。我想要的是能够在具有“添加新公司”的collection_select下拉菜单中拥有一个字段,并将用户带到公司/新页面。目前,除非用户先前已将公司添加到其组织(用户belongs_to组织,公司belongs_to组织),否则无法提交sales_opportunity。如何在Rails的collection_select字段中添加“添加新链接”

该字段的代码如下:

<div class="form-group"> 
    <%= f.label :company_id, :class => "col-md-4 control-label" %> 
<div class ="col-md-8"> 
    <%= f.collection_select :company_id, @user.organization.companies(:company_name), :id, :company_name %> 
</div> 
</div> 

有没有一种方法,我可以添加到这个下拉列表的链接,使用户如果不存在将公司添加到列表中(或者,如果他想添加的公司不在列表中)?

我能想到克服这个问题的唯一方法是if语句有一个链接到一个按钮来添加一个公司,如果没有的话 - 但这不包括公司在数据库中但不是一个用户需要。

任何想法?

+0

您可以用JavaScript – RSB 2014-09-29 09:06:33

+0

感谢做到这一点 - 任何想法,我可以找到一个教程/指南,可以帮助我学习更多? – Zoinks10 2014-09-29 09:35:52

回答

1

你可以使用JavaScript来做到这一点,但它需要一些工作。你的问题是相当广泛的,所以我没有包含任何代码,但我已经列出了基本步骤作为出发点。

1)您需要添加一个JavaScript事件处理程序来观察下拉列表,当选择'add new'选项时,它会触发一个Ajax请求。

2)Ajax请求将呈现创建动作(模式框对用户来说很好)。

3)当用户提交表单时,它将通过Ajax进行更新。

4)通过Ajax重新载入下拉菜单以显示新公司。

正如你所看到的,最复杂的是在JS端,而不是Rails的:)

+0

感谢您的帮助。我想我会花一天时间学习Ajax/Javascript,然后...... – Zoinks10 2014-09-30 00:00:03