Rails 在javascript中使用ruby對象

1.在javascript中使用ruby簡單對象

        如,需要將ruby對象轉換成javascript的簡單變量:
<%= javascript_tag do %>
  url = '<%= j products_url %>';
<% end %>

      此時的<%=  %>是由引號包裹的。rails的j方法是爲了正確地轉義ruby對象從而嵌入javascript中。

2.在javascript中使用ruby複雜對象

        公共橋樑顯然是json,但要正確地轉義json就需要raw方法:
<%= javascript_tag do %>
  products = <%= raw Product.limit(10).to_json %>
<% end %>
        此時<%= %>無引號包裹。

3.Gon gem

    如果有大量的ruby對象需要在javascript中使用,這種方法就不好了。Gon就是爲了解決這個問題。
    首先在gemfile中添加gon:
gem 'gon'

    然後在/app/views/layouts/application.html.erb文件中包含gon:
<head>
  <title>Store</title>
  <%= include_gon %>
  <%= stylesheet_link_tag    "application", media: "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tag %>
</head>

    然後在controller中就可以以這種形式爲javascript對象賦值:
gon.variable_name = variable_value
# or new syntax
gon.push({
  :user_id => 1,
  :user_role => "admin"
})
gon.push(any_object) # any_object with respond_to? :each_pair

    例如:

    在js中獲取變量的方法:
gon.variable_name
    即:
go.products

參考文獻

1.gon

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章