javascript - rails : pass data to javascript

标签 javascript ruby-on-rails

我是 Rails 新手,我有一个 Controller :

class PagesController < ApplicationController
   def home
      @temp = "Hello"
   end
end

我已经读到,我必须将 javascript 代码放入 application.js (告诉我是否属实),并且我已经:

window.onload=function(){alert("<%= j @temp %>")}

显然该警报打印字符串“<%= j @temp %>” 如何将变量 @temp 传递给 javascript,以便警报可以打印 Hello?

谢谢

最佳答案

我在 how to pass Ruby objects to the client 上写了一篇文章。 Ryan Bates 也有一个出色的 RailsCast on passing data to JS

在 View 中添加一个与 PagesControlle#home 操作相对应的 div,该操作在加载页面时不可见,但包含存储在 Ruby 对象中的数据:

# views/pages_controllers/home.html.erb
<%= content_tag :div, class: "temp_information", data: {temp: @temp} do %>
<% end %>

加载包含此 div 的页面并查看页面源代码。您可以看到存储在 .temp_information div 中的 Ruby 对象。打开 JavaScript 控制台以将 Ruby 对象作为 JavaScript 对象进行访问:

$('.temp_information').data('temp')

您不需要将 JS 添加到 JS 部分,您也可以使用 Assets 管道。

关于javascript - rails : pass data to javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18162197/

相关文章:

javascript - 在React中使用扩展运算符进行redux?数组映射问题?

javascript - 通过连接引用 JS 对象

JQuery添加请求问题

sql - 如何为 Rails 中的联合查询创建 ORM (ActiveRecord) 模型

ruby-on-rails - 环境.rb中的Rails 3电子邮件密码?推送到 git 安全吗?

javascript - 使用 angular-snap 和 snapjs 禁用所有抽屉

javascript - 使用 javascript 无需手动编辑代码即可更新公告板

javascript - 如何在不更改 div 中的任何其他元素的情况下更改 div 中的文本

ruby-on-rails - rabl View 中的片段缓存?

jquery - 在rails中执行AJAX Post而不传递authenticity_token