2015-07-05 43 views
0

某些上下文:我嘗試避免使用基於電子郵件的確認,方法是提出一個模式,要求用戶第一次嘗試確認其電子郵件地址和電話號碼在我的Rails 4應用程序中執行實質性操作。渲染/重定向到現有的JQuery對話窗口

此模式是一個JQuery對話框,它加載一個縮寫的用戶表單,只包含用戶的聯繫信息。用戶可以更新他的信息並點擊提交,或者直接點擊提交確認信息是否正確。

我在我的用戶控制一些代碼,處理表單提交和重定向到一個標準的方式不同的看法:

if update_required 
     respond_to do |format| 
     if @user.update(attribs) 
      puts "update succeeded" 
      format.html { render :confirmation_update, :layout => false } 
      format.json { render :show, status: :ok, location: @user } 
     else 
      puts "update failed dismally" 
      format.html { render :confirmation, :layout => false, alert: 'there were errors'} 
      format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
     end 
    end 

我的問題是,是那些獲得渲染成功的表格/失敗得到呈現在主窗口中,我希望它們在現有的JQuery對話窗口中呈現。有沒有一種方法可以指定將呈現這些視圖的目標?

回答

0

一個方法來做到這一點,你必須發送這樣的請求像ajax調用。 首先你前面的表格,必須有遠程:真正在他的選擇,並用JS你的行動必須迴應:

if update_required 
    respond_to do |format| 
    if @user.update(attribs) 
     puts "update succeeded" 
     format.js { render :confirmation_update } 
    else 
     puts "update failed dismally" 
     format.js { render :confirmation } 
    end 
    end 
end 

此文件confirmation_update和確認必須與像例子下一個內容jQuery的對話框中js.erb :

$('#myModal').html("<%= j render('confirmation_content')%>"); 
$('#myModal').dialog('open'); 

在confirmation.js.erb錯誤消息:

$('#flash').html("there were errors"); 

在此示例中的文件_confirmation_content.html.e rb應該被創建並且必須是具有模態內容的軌道部分。