Rails-将信息从视图传递到Javascript

时间:2014-08-17 14:18:28

标签: javascript ruby-on-rails websocket

我想开始使用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);

2 个答案:

答案 0 :(得分:0)

尝试

<%= 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或其他第三方js API中读取它。

答案 1 :(得分:0)

为了将信息从ruby传递给javascript你可以使用这个gem:Gon,基本上它会转换ruby变量并使它们可以在每个视图上使用javascript,看看: http://railscasts.com/episodes/324-passing-data-to-javascript 对于实现目的访问的任何其他替代方案:https://www.ruby-toolbox.com/categories/javascript_tools#paloma