javascript - 如何在 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 变量中并从那里获取它?
解决方案
正如@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 是因为在您的代码示例中您正在使用它。
推荐阅读
- python - Target_size image_gen.flow_from_dataframe InceptionResNetV2 (Keras) 用于较小的图像
- xcode - Xcode 如何计算故事板的部署目标?
- asynchronous - 如何在 python3.7 的 asyncio 库中运行时将任务添加到事件循环?
- node.js - AWS Lambda ERR_STREAM_WRITE_AFTER_END 上的 Node.js mysql2
- flutter - 如何在颤动中更改 DrawerHeader 的高度?
- ruby-on-rails - 如何通过浏览器历史实现“返回”的链接?
- java - 将函数累积应用于任何类型列表中的每个元素
- python - Python Bot 在 Whatsapp 上回复你好
- javascript - 反应原生的条件显示
- javascript - ctx.fillrect 不起作用