2010-08-21 59 views
23

我卡在一個(顯然)簡單的問題。 在我event_controller我有i_like_it行動:呈現不同的Javascript文件在respond_to

def i_like_it 
    @event = Event.find(params[:id]) 

    ... # logic 

    respond_to do |format| 
     format.js 
    end 
    end 

在我的情況「i_like_it」被調用:方法=> PUT(這是一個Ajax調用 ,「i_like_it.js.erb」會被退回一個腳本,它西港島線 在瀏覽器上執行。)

我想呈現一個Javascript使用不同的名稱(不 i_like_it.js.erb)文件,但我還沒有找到任何選項Rails API docs。

respond_to do |format| 
    format.js { render ??? } 
end 

Rails可以渲染香草JavaScript和:JS的選擇,但我不想 使用JavaScript控制器

你有什麼建議嗎?

謝謝 亞歷山德羅DS

回答

7

嘗試的render :template => 'your_file_here'代替

的文檔render描述了幾個其他的選擇了。

42

如果你這樣做:

respond_to do |format| 
    format.js { render :action => "different_action" } 
end 

將會加載RAILS_ROOT /應用/視圖/ 您的控制器 /different_action.js.erb代替。

format.js模塊只是確保如果它是.js請求,則默認情況下會設置正確的標頭,並且默認情況下它會查找.js.erb或.js而不是.html.erb。

您還可以使用render:file來渲染文件系統中恰好有JS的任意文件,或者您可以使用渲染的其他常用選項。 There are a few of them

+0

對我來說,我必須呈現不同控制器的js文件,然後渲染:模板=>「my_file」是比較合適的, 謝謝, 亞歷山德羅DS – 2010-08-23 08:29:54

+0

如果我想呈現一個my_javascript.js。另一個控制器的erb? – zer0uno 2013-11-11 12:16:31

+0

如何從不同的文件夾中調用文件,例如與控制器無關的共享文件夾?相對路徑在哪裏開始,你可以舉一個例子(例如root/app/views/shared/vote.js.erb)? – ahnbizcad 2014-07-15 10:05:39