Javascript 从主干视图访问Rails会话变量
这可能是一个非常简单的问题,但我找不到答案。我应该如何从javascript/jQuery(从主干视图)访问rails会话变量?很可能这不是最佳做法,但这对我来说不是问题 谢谢,,Javascript 从主干视图访问Rails会话变量,javascript,ruby-on-rails-3,jquery,backbone.js,Javascript,Ruby On Rails 3,Jquery,Backbone.js,这可能是一个非常简单的问题,但我找不到答案。我应该如何从javascript/jQuery(从主干视图)访问rails会话变量?很可能这不是最佳做法,但这对我来说不是问题 谢谢,, Alexandra不,会话变量驻留在服务器上,因此没有使用javascript/jquery直接访问会话变量的方法 最好是使用javascript/jQuery对服务器进行ajax调用,调用到您定义的url,以返回您想要的会话变量(例如JSON格式),以便您可以直接使用javascript访问它: { "sess
Alexandra不,会话变量驻留在服务器上,因此没有使用javascript/jquery直接访问会话变量的方法 最好是使用javascript/jQuery对服务器进行ajax调用,调用到您定义的url,以返回您想要的会话变量(例如JSON格式),以便您可以直接使用javascript访问它:
{
"sessionVariableName": "sessionVariableValue"
}
alert(gon.my_session_variable)
不,这绝对不是最好的做法。会话变量应该留在服务器IMO上。不,会话变量驻留在服务器上,因此没有使用javascript/jquery直接访问会话变量的方法 最好是使用javascript/jQuery对服务器进行ajax调用,调用到您定义的url,以返回您想要的会话变量(例如JSON格式),以便您可以直接使用javascript访问它:
{
"sessionVariableName": "sessionVariableValue"
}
alert(gon.my_session_variable)
不,这绝对不是最好的做法。会话变量应保留在服务器IMO上。您可以使用。它允许在每次请求时自动发送数据,并允许从javascript访问数据
例如,在gem文件中包含gem后,可以将before筛选器添加到ApplicationController:
class ApplicationController < ActionController::Base
before_filter :set_gon
...
protected
def set_gon
gon.my_session_variable = session[:my_session_variable]
end
end
这样,在ajax响应中只包含特定于请求的数据,所有额外信息都可以从gon变量获得。您可以使用。它允许在每次请求时自动发送数据,并允许从javascript访问数据
例如,在gem文件中包含gem后,可以将before筛选器添加到ApplicationController:
class ApplicationController < ActionController::Base
before_filter :set_gon
...
protected
def set_gon
gon.my_session_variable = session[:my_session_variable]
end
end
这样,在ajax响应中只包含特定于请求的数据,所有额外的信息都可以从gon变量获得。以防万一,这可能会帮助某人 虽然ejosafat的答案是正确的,但我需要从主干访问rails会话变量的主要原因是能够修改它们。因为我不知道自己想要什么,所以我的问题一开始就模棱两可(例如,访问会话变量不必是一个直接的过程)。我最终实现目标的方式是使用以下四个步骤:
def modify_session_variables
if params[:taskParentId]
session[:task_parent_id] = params[:taskParentId]
end
end
saveAsParentTask: function() {
var self = this;
$.ajax({
url: '/modify_session_variables',
type: 'GET',
data: {
taskParentId: self.getId()
},
async: false,
success: function() {
App.filtersState.setSubtreeParent(self);
}
});
},
只要用户不注销应用程序,此过程将保存用户选择。有点复杂,但按照我希望的方式工作。以防万一,这可能会帮助某人 虽然ejosafat的答案是正确的,但我需要从主干访问rails会话变量的主要原因是能够修改它们。因为我不知道自己想要什么,所以我的问题一开始就模棱两可(例如,访问会话变量不必是一个直接的过程)。我最终实现目标的方式是使用以下四个步骤:
def modify_session_variables
if params[:taskParentId]
session[:task_parent_id] = params[:taskParentId]
end
end
saveAsParentTask: function() {
var self = this;
$.ajax({
url: '/modify_session_variables',
type: 'GET',
data: {
taskParentId: self.getId()
},
async: false,
success: function() {
App.filtersState.setSubtreeParent(self);
}
});
},