gpt4 book ai didi

javascript - 从 Rails 3 中的 application.js 访问 current_user 变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:40:37 26 4
gpt4 key购买 nike

我希望从我的 application.js 访问我的 current_user 变量(我将我的 application.js 重命名为 application.js.erb 以便服务器可以理解我的 ruby​​ 代码),所以我得到了类似的东西:

function hello(){ alert("<%= current_user.name %>"); }

但失败了:

enter image description here

我如何从位于/assets/my_script.js.erb 中的脚本中获取像 current_user 这样的 session 变量,我认为它不应该被启用,因为这些变量可能无法从公共(public)站点访问,或者什么应该怎么做?

谢谢!

最佳答案

Application.js 不会在任何 session 变量或方法的上下文中进行评估。从 javascript 访问用户名的最简单方法是在应用程序 Controller 的 before_action 中设置一个 cookie:

class ApplicationController < ActionController::Base
before_action :set_user

private

def set_user
cookies[:username] = current_user.name || 'guest'
end
end

然后您可以从 app/assets 中的任何 js 访问 cookie:

alert(document.cookie);

一个更冗长但可以说更简洁的方法是创建一个访问当前用户并返回用户名的路由,例如

路线.rb

get 'current_user' => "users#current_user"

用户 Controller .rb

def current_user
render json: {name: current_user.name}
end

应用程序.js

$.get('/current_user', function(result){
alert(result.name);
});

关于javascript - 从 Rails 3 中的 application.js 访问 current_user 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com