我希望从我的 application.js 访问我的 current_user 变量(我将我的 application.js 重命名为 application.js.erb 以便服务器可以理解我的 ruby 代码),所以我得到了类似的东西:
function hello(){ alert("<%= current_user.name %>"); }
但失败了:
我如何从位于/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/