【问题标题】:How can I put an "add new" link in a collection_select field in Rails如何在 Rails 的 collection_select 字段中添加“添加新”链接
【发布时间】:2014-11-23 14:57:20
【问题描述】:

我想在我的 Rails 应用程序中构建一个 sales_opportunity。 sales_opportunity 属于一个用户和一个公司。该代码目前运行良好,并且该表单允许用户根据数据库中预定义的公司集合选择一个公司来链接 sales_opportunity。我想要的是能够在 collection_select 下拉菜单中有一个具有“添加新公司”的字段并将用户带到公司/新页面。目前无法提交sales_opportunity,除非用户之前已将公司添加到其组织(用户属于_to 组织,公司属于_to 组织)。

该字段的代码如下:

<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 语句,该语句有一个链接到一个按钮来添加一个公司,如果不存在的话 - 但这并不涵盖公司在数据库中但不在数据库中的情况用户想要的。

有什么想法吗?

【问题讨论】:

  • 你可以用javascript做到这一点
  • 谢谢 - 知道在哪里可以找到可以帮助我了解更多信息的教程/指南吗?

标签: ruby-on-rails collection-select


【解决方案1】:

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

1) You'll need to add a JavaScript event handler to watch the dropdown, when the 'add new' option is selected it will tr​​igger an Ajax request.

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

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

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

如您所见,大部分复杂性都在 JS 方面,而不是在 Rails 方面:)

【讨论】:

  • 感谢您的帮助。我想我今天会花一天时间学习 Ajax/Javascript...
猜你喜欢
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多