Ruby JSX 文件中的 Sinatra 会话?

Ruby Sinatra Sessions in a JSX file?

我是集成 React + 的新手 ruby,想知道是否有办法访问我存储的会话内容?

例如,在我的 app.rb 中,我正在存储 sessions[:return_url]=blah.com。我目前正在为我的 UI 使用 reactjs,并希望在单击按钮时访问此 return_url。有没有办法访问它?

我试过 <%= return_url = sesssions[:return_url] %> 但这不起作用,因为我在 .jsx 文件中,它无法解释这个哈哈(值得一试)

如有任何提示,我们将不胜感激!

如果你想在客户端读取会话相关的非敏感数据,你可以从服务器设置一个cookie并在客户端使用javascript读取它。

您可以使用 Sinatra 设置 cookies,详见此处:http://www.sinatrarb.com/contrib/cookies

并且您可以使用 Javascript 读取 cookie,详见此处:Read a javascript cookie by name

另一种方法是在服务器端呈现 javascript 并将值存储在 javascript 变量中。我相信你已经尝试过这个:

<%= return_url = sesssions[:return_url] %>`

但这只是设置了一个 Ruby 局部变量,它在客户端丢失了,也许你想将 return_url 设置为你想要的按钮的 href点击了吗?

但是,如果您需要 javascript 点击处理程序中的变量,只需在 ERB 视图中呈现 javascript 变量:

var returnUrl = "<%= sessions[:return_url] %>";

通过以上内容,您应该可以在按钮单击处理程序中访问 javascript 变量 returnUrl,前提是它在相同或更高的词法范围内。