2011-05-18 16 views
1

這裏是一個create動作:做一個控制器重定向HTML與JavaScript

def create 
    @folder = Folder.new(params[:folder]) 
    @folder.user_id = current_user.id 
    if @folder.name != "Folder Name" && @folder.save 
     respond_to do |format| 
      format.html { redirect_to messages_url(:target => params[:target], :search => params[:search]) } 
      format.js 
     end 
    else 
     flash[:notice] = "Error saving folder. Please try again." 
     redirect_to messages_url(:target => params[:target], :search => params[:search]) 
    end 
end 

我試圖做到這一點是:當保存成功,返回create.js.erb(這工作)。

當保存不成功時,redirect_to messages_url通常(即使用HTML)。

當後者發生時,重定向發生在使用JS,然後我得到一個錯誤,顯示索引操作(當然)無法找到JS模板。 如何在HTML中執行此重定向?

回答

4

當保存不成功時,您也需要響應格式,並且可以使用js helpers重定向頁面。代碼可能是這樣的

if @folder.name != "Folder Name" && @folder.save 
     respond_to do |format| 
      format.html { redirect_to messages_url(:target => params[:target], :search => params[:search]) } 
      format.js 
     end 
    else 
     flash[:notice] = "Error saving folder. Please try again." 
     respond_to do |format| 
     format.html { redirect_to messages_url(:target => params[:target], :search => params[:search])} 
     format.js {render(:update) { |page| page.redirect_to messages_url(:target => params[:target], :search => params[:search])}} 
     end 
    end 
相關問題