[英]Accessing current_user variable from application.js in Rails 3
我希望从我的application.js访问我的current_user变量(我将我的application.js重命名为application.js.erb,以便服务器可以理解我的ruby代码),所以我有类似的东西:
function hello(){ alert("<%= current_user.name %>"); }
但它失败了:
如何从位于/assets/my_script.js.erb中的脚本获取设备变量,例如来自devise gem的current_user,我认为它不应该是因为theese变量可能无法从公共站点加入,或者应该怎么做这个?
谢谢!
Application.js不会在任何会话变量或方法的上下文中进行评估。 从javascript访问用户名的最简单方法是在应用程序控制器上的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);
一个更详细但可以说更清晰的方法是创建一个访问当前用户并返回用户名的路由,例如
的routes.rb
get 'current_user' => "users#current_user"
users_controller.rb
def current_user
render json: {name: current_user.name}
end
的application.js
$.get('/current_user', function(result){
alert(result.name);
});
将当前用户从应用程序控制器传递为JSON,以便javascript可用。
应用控制器 :
def method_name
respond_to do |format|
format.json{ render :json => @user.to_json }
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.