2012-07-17 114 views
0

在我的Rails應用程序中,我需要腳本的行爲有所不同,具體取決於從哪個控制器和它們提供的操作。所以在我的ApplicationController中,我做這些可像這樣:從javascript訪問實例變量

before_filter :save_action_controller 

def save_action_controller 
    @action = action_name 
    @controller = controller_name 
end 

而在ERB-過濾JavaScript文件我有這樣的:

window.controller = <%= @controller || 'undefined' %>; 
window.action = <%= @action || 'undefined' %>; 

但似乎@Controller和@action均爲零在這種情況下?但是,我可以從視圖和助手訪問它們。另外,如果我真的想要訪問「不存在的」變量,我不明白如何在不引發異常的情況下實現這一點。

我需要做什麼來訪問這個從JavaScript?有一種首選的方法嗎?

回答

5

這個railscast集有一些關於將數據傳遞給javascript的信息。

有幾種方法可以做到這一點,但一個不錯的方法是使用數據屬性(如railscast中所示)。你可以像這樣用HTML定義它:

<h1>Products</h1> 

<div id="products" data-url="<%= products_url %>"> 
    Loading products... 
</div> 

,然後通過JavaScript

jQuery -> 
    alert $('#products').data('url') 
+0

這似乎是一個乾淨的方式做到這一點,得益於訪問它! – jforberg 2012-07-17 14:40:20