首页 > 解决方案 > 如何在 htm.erb 文件的内联 Ruby 代码中使用 javascript 变量

问题描述

我在选择框中有一组数据,比如说@users = User.all。在更改时,我想在 javascript 中使用选定的用户获取一个变量,我的意思是这样的:

    $("user_select").change(function(e){
        e.preventDefault();
        user_id = $(this).val();
        user = <%= @user.find(<user_id>) %>
    }) 

可能吗?或者我必须将整个集合放在 javascript 变量中并从那里获取它?

标签: javascriptruby-on-railsruby

解决方案


正如@sergio-tulentsev 所说,我正在以一种简单的方式思考,你想要做的不是posble,而是使用更多的js,如果你已经加载了所有的,你不需要在rails集合上找到用户用户,然后将它们传递给一个 javascript 变量并在更改事件上,只需从那里选择一个,就像这样。

当您加载所有用户的页面时,只需将它们作为 json 保存在 javascript 变量中

var users = <%= @users.to_json.html_safe %>;

之后,在你的活动中

$("user_select").change(function(e){
  e.preventDefault();
  user_id = $(this).val();
  $.each(users, function(i, u) {
    if (u.id == user_id) {
      user = u
      return;
    }
  });
}) 

这样,您将拥有一个带有 json 的用户以及该用户的所有值,然后您可以user.name在 javascript 上执行类似的操作来获取这些值。

我使用 jquery 是因为在您的代码示例中您正在使用它。


推荐阅读