我是 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/