2012-05-14 25 views
1

當用戶轉到我的站點時,我想呈現index.html.haml以及index.js.haml。 (我試圖讓我的JS脫離視圖。)Rails:在一個請求中呈現html和js

目前,它只是呈現html。用html和js添加一個respond_to塊只是呈現html。

我該怎麼做?有沒有更好的辦法?我不想將JS包含在/ assets/js中,因爲ruby是在JS中執行的。

+0

javascript是不是呈現btw(只是單挑)。渲染向用戶顯示內容。 – thejartender

回答

2

一個rails控制器動作一次只能響應一個HTTP請求,即使它可以響應多個JS請求從HTML請求的初始請求(所以這是一個單獨的請求)。

如果你想保持你的Javascript在另一個文件中的清晰度,你可以創建一個部分,並以這種方式加載它。

在該響應與@my_var控制器動作傳遞給所述部分(./views/mycontroller/my_action.html.erb)的視圖:

<%= render 'my_action_js', :my_var => @my_var %> 

和部分(./views/mycontroller /_my_action_js.html.erb)

<script type="text/javascript"> 
    alert(<%= my_var %>); 
</script> 
+0

非常感謝您的豐富答案。 –

+0

@KreeK,Rails就像這樣做的JavaScript部分是一個Ajax輪詢請求從數據庫中獲取數據,然後渲染它? – yeenow123

+0

@ yeenow123不知道這是否是Rails方式:)但我沒有看到任何問題。我的一般規則是,如果少量數據與原始請求一起傳遞,如果它較大,並且您希望在頁面上獲取某些內容,以便用戶不保釋,則在事實之後加載它。 – kreek