Rails - 将信息从视图传递到 Javascript
Posted
技术标签:
【中文标题】Rails - 将信息从视图传递到 Javascript【英文标题】:Rails- Pass information from view to Javascript 【发布时间】:2014-08-17 14:18:28 【问题描述】:我想开始使用 websockets。 I read all the docs 什么都懂,但遗漏了我需要的东西:如何将信息从视图传递给 JS?
我需要将数据从 javascript 传递到我的控制器。我不明白的是,如何在我的视图中将动态生成的数据发送到要发送的 javascript?
现在我的视图在每个 HTTP 请求上接收一个实例变量,它遍历每个实例变量并创建一个按钮,该按钮提交一个带有从该实例变量中提取的信息的哈希。我不明白如何用 Javascript 做同样的事情,因为 Javascript 无法理解 Ruby 类。
这就是我的代码现在的样子:
查看/仪表板/_other_characters.html.erb
<% other_characters.each do |other_character| %>
<p><%= other_character.name %> is standing here (<%= other_character.power_level %>)</p>
<%= button_to "punch #other_character.name",
attacks_path(
target_type: other_character.class,
attack_type: :punch,
target_id: other_character,
target_name: other_character.name
) %>
<% end %>
这就是我希望使用 JS 能够做到的事情
var task =
name: 'Start taking advantage of WebSockets',
completed: false
var dispatcher = new WebSocketRails('localhost:3000/websocket');
dispatcher.trigger('tasks.create', task);
【问题讨论】:
【参考方案1】:试试
<%= button_to "punch #other_character.name",
attacks_path(
target_type: other_character.class,
attack_type: :punch,
target_id: other_character,
target_name: other_character.name
), id: '***', data: name: '***', other_key: 'other_value' %>
然后就可以通过jQuery data api访问数据了。
当您需要通过客户端 js 从视图中获取动态数据时,在您的视图 dom 中添加 data-attrs,然后从 dom API 或其他 3rd 方 js API 中读取它。
【讨论】:
【参考方案2】:为了将信息从 ruby 传递到 javascript,您可以使用这个 gem:Gon,基本上它会转换 ruby 变量并使它们在每个视图上都可用于 javascript,看看: http://railscasts.com/episodes/324-passing-data-to-javascript 如需任何其他替代方案来实现您的目的,请访问:https://www.ruby-toolbox.com/categories/javascript_tools#paloma
【讨论】:
以上是关于Rails - 将信息从视图传递到 Javascript的主要内容,如果未能解决你的问题,请参考以下文章
Rails 将@variable 从一个显示页面传递到另一个显示页面
在 ruby on rails 中将参数从视图传递到控制器