2013-06-19 61 views
0

我有一個事件窗體,它具有用於場地的選擇下拉菜單。目前,如果要爲活動添加新的場地,用戶必須導航到場地表單,創建場地,然後返回到事件表單,這不太理想。Rails Ajax窗體添加新的關聯記錄

我已經有一半通過AJAX得到這個工作,但它不是那裏。我在我的事件表單上有一個鏈接,用於調用包含場地表單的(twitter引導程序)模式。場地表格已被設置爲:remote => true,並提交它確實創建了一個新的場地,但模式/表格未關閉,並且事件表格的場地選擇未刷新。我必須手動刷新頁面以確認添加新場地。

的VenueController創建行動看起來像這樣,與響應調用format.js

def create 
    session[:return_to] ||= request.referer 
    @venue = Venue.new(params[:venue]) 

    respond_to do |format| 
     if @venue.save 
     format.js 
     else 
     format.html { render :action => "new" } 
     end 
    end 
    end 

在應用程序/視圖/場館我有create.js.erb看起來像這樣:

$('#townvenue').html("<%= escape_javascript(render(@town_venue)) %>"); 

(我幾乎可以肯定這是我錯了)。

#townvenue是一個div我的活動形式中和自身的部分位於 應用程序/視圖/事件/ _town_venue.html.erb

<div id="townvenue"> 
<div> 
    <%= f.label :town_id, :class => 'control-label form_labels' %> 
    <%= f.collection_select :town_id, Town.order(:town), :id, :town, include_blank: true %> 
</div> 

<div> 
    <%= f.label :venue_id, "Venue", :class => 'control-label form_labels' %> 
    <%= f.grouped_collection_select :venue_id, Town.order(:town), :venues, :town, :id, :name, include_blank: true %><br /><a href="#myModal" role="button" data-toggle="modal">[Add new venue]</a><br /> 
</div> 
</div> 

任何人都可以在這個謎題最終片幫助嗎?

回答

0

這只是一個提示。獲取您的選擇ID,並在您的.js.erb文件中附加$('#select_box_id').append('<option value="<%= venue.value %>"><%= venue.name %></option>')

+0

現在看起來很明顯,我可以看到如何工作。但是,我試過使用正確的ID,它似乎沒有做任何事情。有什麼我可以做的,以確認create.js.erb文件肯定被正確調用? – Raoot

+0

這些選項在optgroups中是否重要? – Raoot

+0

是的,你應該追加到optgroup,而不是選擇菜單。 – Vilelm

相關問題