2012-02-10 20 views
0

我有一個div,當用戶點擊鏈接並顯示他們再次單擊它時顯示。我們希望div在用戶返回時摺疊,如果他們選擇隱藏它,所以我們在用戶數據庫中添加了布爾列hide_todo,並且我添加了一個方法來測試user_controller中的值。隱藏是通過jQuery完成的,我們希望如果用戶點擊Hidehide_todo的值更改爲true,並在用戶單擊Show時將其值設爲false。如何訪問application.js中的Ruby變量?在`application.js`中訪問Ruby變量的布爾值

+0

而不是用jQuery隱藏它我會在渲染時向'element:none'添加一個類,以防止內容閃爍。如果你想保存div的狀態,你需要爲此使用ajax。 – phoet 2012-02-10 21:11:30

回答

0

那麼我們最終使用了$.get('toggle_hide');,在控制器中添加一個方法來切換布爾值並將其映射到route.rb中的資源。感謝您的建議,但!

2

有3種方式訪問​​JS紅寶石變量:「application.js中:如果你使用的軌道3.1+與資產管道

A),你可以.erb擴展到像這樣的文件添加。 ERB」。現在你可以使用erb標籤.js <%ruby.code(); %>這是我會說奇怪的方式來做到這一點,它只會在特殊情況下才會做出反應。 B)通常你會將你需要的數據添加到你的HTML文檔的DOM中,並從中檢索數據。

例如,在您的ERB(或者在HAML類比的方式)模板折騰這樣的:

<div id="collapsable" data-show="<%= model.hide.todo%>"> </div> 
現在

在jQuery中您可以訪問下列方式數據:

hide_todo = $("#collapsable").data("show"); 

C)另一種方法是進行ajax調用,它將從Rails應用程序返回數據。

在你的情況下,我建議第二種方法。