2012-10-26 13 views
0

因此,在我的Rails應用程序中,我在我的某個頁面上添加了錯誤消息。該過程是(所以每個人都明白)首先,在我的'編輯'link_to我添加:remote => true在它的末尾,因此它發送一個ajax請求。然後我在我的respond_to do |format|區塊中添加了行format.js。然後,我用下面一行代碼$('#error').html("<%= flash[:error] %>");創建了一個edit.js.erb文件,該文件基本上在當前頁面中找到了錯誤div,並用該錯誤Flash消息替換了該div中的html。這很酷嗎?如果發生錯誤,不會再有惱人的頁面刷新。.js.erb文件可用於所有其他視圖?

問題是,我想爲我所有的編輯和銷燬頁面執行此操作,但是如何不爲每個視圖文件夾生成edit.js.erb和destroy.js.erb文件?似乎很簡單,也許我只是錯過了一個明顯的答案,因爲我筋疲力盡,但我無法弄清楚......所以...幫助?????

編輯!

這是我的編輯控制器

def edit 
user = User.find(session[:id]) 
@table = Table.find(params[:id]) 



if user.id != @table.created_by 

    flash[:error] = "ERROR" 
    respond_to do |format| 
    format.js {render :template => 'shared/show_error'} 
    format.html 
    end 
else 
    flash[:error] = "" 
    respond_to do |format| 
    format.js {render :template => 'table/edit', :formats => :html} 
    format.html 
    end 

end 
end 

現在的問題是,它工作正常顯示的錯誤,但如果沒有錯誤,它不採取行動使編輯頁面...在服務器窗口就說明它確實,但它並沒有真正顯示在屏幕上......任何想法?

+0

不要在'format.js'調用中放入':formats =>:html'。 – MrDanA

+0

謝謝,但那不是修復:( – user1759942

回答

0

我實際上確定了自己的問題......我從else塊中刪除了行{render :template => 'table/edit', :formats => :html}

2

我建議,那麼你做一般性JS.erb文件,是這樣的:

# app/views/shared/show_errors.js.erb 
('#error').html("<%= flash[:error] %>"); 

然後在你的控制器動作,或從另一個JS.erb文件,只需鍵入:

render :template => "shared/show_errors" 

瞧!

相關問題