幾個方法我已經在過去
做到了這一點把數據放到隱藏域,訪問在JS中的數據/咖啡
# single value
<%= hidden_field_tag "foo_name", @foo.name, { :id => "foo-name" } %>
$('#foo-name').val();
# when the 'value' has multiple attributes
<%= hidden_field_tag "foo", @foo.id, { :id => "foo", "data-first-name" => @foo.first_name, "data-last-name" => @foo.last_name } %>
$foo = $('#foo')
console.log $foo.val()
console.log $foo.data("firstName")
console.log $foo.data("lastName")
另一種選擇:將數據加載到JS中的數據結構ERB,由JS訪問它/咖啡
<% content_for(:head) do %>
<script>
window.App = window.App || {};
window.App.Data = window.App.Data || {};
window.App.Data.fooList = [
<% @list.each do |foo| %>
<%= foo.to_json %>,
<% end %>
];
</script>
<% end %>
# coffee
for foo in window.App.Data.fooList
console.log "#{foo.id}, #{foo.first_name} #{foo.last_name}"
我不是這樣的ERB紅寶石構建的JavaScript數據的忠實粉絲,一些關於它只是感覺不對 - 它可以有效儘管
和另一種選擇:讓Ajax調用,並獲得按需從服務器的數據
我也有興趣在其他的想法和做法
這是http://stackoverflow.com/questions/8108511/how-to-access-instance-variables-in-coffeescript-engine-inside-a-slim-template的副本?看起來像接受的答案有幫助。 – Thilo 2011-12-15 01:20:59
@Thilo據我所知,該問題是指views文件夾中的.slim模板,所以實際上,CoffeeScript將作爲視圖的一部分進行處理,而不是事先處理爲資產文件。如果我錯了,請糾正我。 – 2011-12-15 01:27:54
是的,我對Rails不太瞭解,以確定這個答案是否適用。但要點似乎是將所有需要的實例變量渲染到一段Javascript中,以便其他資源可以引用。 – Thilo 2011-12-15 02:20:04