2014-09-29 106 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