2011-11-20 54 views
5

當您點擊「創建語言」時,我試圖將一個部分納入類似於這個模式的東西Rails Admin部分模態的軌跡(渲染部分來自不同的模型)

現在,我還沒有真正發現代碼是如何工作的,我試圖在這個Rails - AJAX a Modal Dialog?和自己的東西之間進行混合。

事情是,局部現在被渲染成模態。但是,當我點擊「保存」時,驗證將返回到「正常」創建新視圖,而不是直接在模態內顯示驗證錯誤。

  1. 如何直接在彈出的模態中顯示驗證錯誤?

  2. 當我保存時,我應該在某種程度上區分保存模式與正常保存,因爲此部分將從別處調用,並且需要將新創建的對象直接設置爲一個新的對象下。我想我需要與響應格式區分開來,然後使用JS將新ID設置爲DropDown ID?

這裏寫一些代碼到目前爲止。在包含部分的視圖中,它看起來像我在其他控制器上調用另一個控制器(因爲我在不同的控制器上 - 新視圖)。

$.get('<%= url_for :controller => 'customers', :action => 'new' %>', 
      function(data) { 
       $('#customer-modal').html(data); 
      } 
    ); 

然後將新的不同的請求格式之間的「customres」控制器distinguishs並呈現不同的部分(在這種情況下「_ajax_form.html.erb」):

if request.xhr? 
    render "_ajax_form", :layout => false 

在該局部,我使用「simple_form_for @customer,:remote => true do | f] ....」,所以我想在最後提交應該看起來不同於標準,因爲這調用控制器上的正常「創建」?

<div class="modal-footer"> 
    <%= f.button :submit, :class => 'btn primary' %> 
    <a id='cancel-form' class= "btn small info">cancel</a> 
    </div> 

感謝所有幫助其澄清什麼,我做錯了,或者應該怎麼做我的Rails中的經驗和JS/AXAX還沒有經歷過..;)

  • 編輯:我現在有這是模態中加載在我的特殊部分的一個版本,其中,將調用simple_form_for內稱爲「new_from_sale」一個單獨的行動:

simple_form_for @customer, :url => url_for(:action => 'new_from_sale', :controller => 'customers') do |f|

然後在控制器中,當這個新對象保存好的時候,我重定向到第一個被調用的視圖,新的id作爲參數,然後填充下拉菜單。在其他情況下,當新對象無法保存時,我需要以某種方式顯示仍以該模式顯示的錯誤。 到目前爲止都試圖直接使部分render :partial => "customers/ajax_form"或歸還JS代碼render :js => "$('#sale_customer_id').val(#{@customer.id});"就沒有工作..但我會繼續努力我的運氣..

回答

2

下面是如何我做了一個基本的例子模式窗體我在響應寫信給一個類似的問題(Rails and modal jquery dialog form):

https://github.com/ramblex/modal-form

您需要添加:remote => true到被加載到對話框的形式。這將導致JS格式從創建操作中呈現。然後您可以在create.js.erb中處理響應。

+0

感謝,並非所有事情都適用於我們的事業,但它提供了一些很好的提示。 即,我們使用模態內的部分,並單獨創建新的/編輯對象。在那裏,我們需要分開,我猜不要使用:remote => true,否則渲染不起作用。 – fisco