如何添加"添加新的"链接在Rails中的collection_select字段中

时间:2014-09-29 09:02:23

标签: ruby-on-rails collection-select

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

该字段的代码如下:

<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>

有没有办法可以添加一个链接到这个下拉列表,这个链接可以让用户将公司添加到列表中(如果不存在)(或者他想要添加的公司是否已经存在于列表中)? / p>

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用JavaScript执行此操作,但这需要一些工作。你的问题很广泛,所以我没有包含任何代码,但我已经概述了基本步骤作为起点。

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

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

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

4)通过Ajax重新下载下拉列表以显示新公司。

正如您所看到的,大多数复杂性都在JS方面,而不是Rails :)