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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值