2013-02-24 196 views
1

有誰知道是否有一個簡單的解決方案來向Rails中的表單中的選擇菜單動態添加新選項?如何在Rails中動態添加選擇菜單選項

Dynamic Forms railscast(http://railscasts.com/episodes/403-dynamic-forms)專注於根據另一個選擇菜單中的選擇動態地過濾第二個菜單菜單,這不是我正在尋找的菜單。我正在尋找一個解決方案,其中表單隻包含一個選擇菜單,並且可以在表單上添加新選項。

我覺得解決方案可能與嵌套模型表單railscast(http://railscasts.com/episodes/196-nested-model-form-revised)中涉及的類似,但在該示例中,表單必須在數據庫中的值更新之前提交。我希望用戶能夠添加新的選擇菜單選項,然後在提交之前繼續完成表單的其餘部分。

在這個階段,我還想避免使用railscast jquery自動填充解決方案,因爲它使用文本字段而不是選擇菜單。

目前我看到解決方案在選擇菜單旁邊有一個「添加新」按鈕。單擊按鈕時,將打開一個Modal,允許用戶輸入新的選擇菜單選項,然後保存(更新數據庫),模式關閉並更新表格。我只是想知道現有的優雅解決方案是否已經存在。

任何幫助將不勝感激。

謝謝。

UPDATE:

我還沒有創建任何代碼,但實現這個,但這裏是我的形式:

<%= simple_form_for @other, :html => { :class => 'form-horizontal' } do |f| %> 
<fieldset> 
    <%= f.error_notification %>   
    <%= f.association :other_type, :include_blank => false %>  
    <%= f.input :cost%> 
    <%= f.input :invoice %>    
    <%= f.input :notes, :input_html => {:class => "row-fluid"} %> 
<%= f.error :base %> 
<div id="eze_form_actions" class="form-actions"> 
    <%= f.submit nil, :class => 'btn btn-primary' %> 
    <%= link_to 'Cancel', others_path, :class => 'btn' %> 
</div> 
</fieldset>  
<% end %> 
+1

發佈您的代碼以及 – Shail 2013-02-24 04:48:36

+0

隨着一些JavaScript的魔術,你可以使它看起來完全像動態表格和所有這些寶石... – gmaliar 2013-02-24 21:07:59

+0

好吧,我有點新手,所以如果沒有現有的解決方案那麼意味着我有一些關於如何使用javascript實現它的閱讀。謝謝你的幫助。 – Marklar 2013-02-24 22:07:31

回答

1

我做過類似這樣的東西在我們的CMS的類別,用戶可以輕鬆地添加一個新類別,然後POST到服務器,該服務器使用HTML進行響應(通過部分渲染),然後將其注入到我們的複選框集合中。您可以輕鬆地複製此爲您的目的:

爲了得到這個工作,你需要你的一個形式,一個端點和一些javascript:

不知道你在做什麼表格將包括,但使用常規形式助手,並確保表格設置爲remote: true

終點

你的終點應該呈現的部分,它應該只包含在HTML的..我們將呈現爲一個字符串,並傳回要添加的前端。

def endpoint 
    # create your new model with the params 
    @model = Model.create(some: attribute) 
    if @model.errors.empty and @model.save 
    render json: { html: render_to_string(partial: "path/to/partial", locals: { model: @model }) 
    end 
end 

** **的JavaScript

$(form) 
    .bind('ajax:success', function(data, status) { 
    $(select).append(status.html) 
    }) 

status.html應該像<option>...</option>,所以我們只是追加到我們的選擇。

讓我知道這是否沒有意義。我希望它有幫助。

+0

非常感謝您花時間幫忙。我以前從來沒有聽說過端點,我能找到的最佳定義是「機架端點只是符合Rack規範的應用程序」。我的項目在哪裏放置我的端點?你有沒有在GitHub上的例子? – Marklar 2013-04-23 23:17:45

+0

而端點只是一個路由,就像您將數據發佈到的'/ path/to/endpoint'一樣。就你而言,無論這是呈現給「simple_form_for @ other」。那有意義嗎? – johnkoht 2013-04-23 23:24:03

+0

我正盡力保持在這裏。我的表單是否需要保持不變,因此我仍然可以正常提交它以添加新項目等。選擇菜單是否提交自己的表單? – Marklar 2013-04-23 23:45:07