2014-09-04 83 views
0

我正在尋找一些關於如何添加和刪除我的下拉列表中的值的指導。如何向Rails中的collection_select(下拉列表)添加/刪除值?

這裏是我的代碼,我用我View/Project/_form.html.erb

<div class="control-group"> 
<%= vf.label(:category_id, :class => "control-label") %> 
<div class="controls"> 
<%= vf.collection_select :category_id, Category.all, :id, :name, prompt: true %> 
</div> 
</div> 

據檢索,我在我的seeds.rb

提供值的列表是否有Rails的一個很好的方式來增加某種「新的價值」的選擇,讓我然後輸入一些文本,並將其保存到下拉列表中?

現在我不想在代碼中添加一些額外的靜態值。對於用戶來說,在使用應用程序時,可以在表單中輸入附加值。

我猜這將涉及某種JQUERY Dialog BoxAJAX電話,但我希望幸運。

無論哪種方式,任何形式的援助或例子將不勝感激。

+0

你能按我的回答得到這個工作嗎?你需要額外的幫助嗎? – 2014-09-05 14:40:45

+0

我想弄明白現在。我會盡快通知你。謝謝。 – Twdeveloper 2014-09-05 14:43:49

回答

0

我會輔助形式添加到頁面,沿着這個線路:

form_for @category, remote: true, :url => {:action => "add_category"} do |f| 
    f.text_field :category_name 
    f.submit "Add category" 

在你的控制,你會處理遠程形式和呈現一個JavaScript模板來更新您的選擇框。喜歡的東西:

def add_category 
    Category.create(category_params) 
    respond_to do |format| 
    format.js 
    end 
end 

然後你就會有一個add_category.js觀點:

$(".controls").html("<%= j (render 'category_selects') %>"); 

最後,你需要創建 'category_selects' 部分更新選擇值:

<%= collection_select :category_id, Category.all, :id, :name, prompt: true %> 

如果你還沒有,我建議通過閱讀「使用JavaScript」的導軌指南:http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

希望這有助於!

+0

仍然有一些問題。使用我的輔助表單在視圖中獲取'NilClass:Class'的未定義方法'model_name'。將張貼代碼。 – Twdeveloper 2014-09-05 17:26:00

+0

我正在評論這個答案,因爲我一直在看「使用JavaScript」導軌指南:你推薦並獲得了我的數據來處理這個例子。我可以弄清楚如何將它應用到這裏的'collection_select'。 – Twdeveloper 2014-09-08 20:10:22

+0

很高興我能幫忙:) – 2014-09-08 20:50:14

相關問題