2013-01-05 139 views
1

我基本上有一個動作,因爲邏輯需要返回另一個js文件的內容。我如何去做這件事?由於如何使用Ruby on Rails響應控制器中的另一個js文件?

應用程序/控制器/ classrooms_controller.rb

def create 
    if params[:test_logic] 
    respond_to do |format| 
     format.js { render 'create_differently' } # This doesn't work. 
    end 
    else 
    redirect_to root_path 
    end 
end 

應用程序/視圖/教室/ create_differently.js.erb

alert('hi') 
+0

你會得到什麼錯誤? – Zepplock

+0

它顯示在後端:'處理由ClassroomsController#創建爲HTML'爲什麼會發生,如果我專門告訴它返回js? – perseverance

+0

由於您已請求HTML頁面並且在控制器代碼執行之前打印,因此出現該消息。那麼這個電話的結果是什麼?你在瀏覽器中看到什麼?是否有例外? – Zepplock

回答

5

您需要

:layout => false 

添加到avoid the rendering of the html您的js文件的佈局。

另外,你可以定義不同的js文件這樣

:template => "classrooms/create_differently.js.erb" 

兩者一起:

format.js { 
    render :template => "classrooms/create_differently.js.erb", 
      :layout => false 
} 

對於基於瀏覽器的測試,請注意調用JS不是HTML!

相關問題