【问题标题】:Ruby Sinatra Sessions in a JSX file?JSX 文件中的 Ruby Sinatra 会话?
【发布时间】:2017-06-20 02:44:29
【问题描述】:

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

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

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

任何提示将不胜感激!

【问题讨论】:

  • 根据我的理解,您无法从客户端读取 Rails 会话,但您可以通过 Ajax 请求来完成

标签: ruby reactjs sinatra


【解决方案1】:

如果您想在客户端读取与会话相关的非敏感数据,您可以从服务器设置一个 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,前提是它位于相同或更高的词法范围内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 2012-07-05
    • 2017-05-20
    • 2011-06-01
    • 2012-02-25
    • 1970-01-01
    • 2013-12-13
    • 2016-03-06
    相关资源
    最近更新 更多