【问题标题】:Set a Session inside Javascript in Ruby on Rails在 Ruby on Rails 中的 Javascript 中设置会话
【发布时间】:2014-06-09 07:03:27
【问题描述】:

我知道这可能在 js 函数中

<% session[:comment] = "This is the comment" %>

但是有什么办法可以做到这一点。

var comment = "This is the comment";
<% session[:comment] = comment %>

因为在我的应用程序中,我从文本字段中获得了此评论。所以我必须动态设置字符串。那么有没有办法让我做到这一点。

【问题讨论】:

    标签: javascript ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    我认为你不能以这种方式设置会话。

    但一个解决方案是使用 cookie 而不是会话。

    有 JS 插件可以设置 cookie,您可以在 ruby​​ 代码中使用它们。

    【讨论】:

      【解决方案2】:

      这是不可能的。 javascript 部分在客户端运行,因此您不能将值插入服务器端变量而不将其发送回服务器。您将不得不使用 ajax 调用来做到这一点。

      这个quora帖子应该会有所帮助:http://www.quora.com/Ruby-on-Rails-web-framework/Can-I-pass-a-JavaScript-variable-to-a-Rails-method

      【讨论】:

      • 所以我不能设置这个会话.. 太伤心了。我不能使用 ajax,因为一旦设置了这个评论,另一个 url 就会被调用
      • 你总是可以在下一个 url 被点击之前进行 ajax 调用。需要更深入地了解您的代码以获得确切的解决方案。
      • 实际上有一个文本字段.. 并使用 jquery onchange 将其值保存在 cmets 变量中。我有一个带有 onclick 的标签,我会转到项目中的另一个 url(fb_share_page)。并在关闭该页面时,fb 会自动给出一个“/fb_close”网址。并使用它转移到另一个控制器方法。
      • 我想在该控制器中添加此评论。因为我无法在 fb_close 中设置任何参数。我想设置会话。
      • 在重定向之前(在 on 更改本身内部,可以通过它的外观来判断)您需要进行 ajax 调用并将其存储在持久变量中(可能是静态变量或全局常量或数据库)。在此 ajax 调用完成后,您可以继续使用成功块中的其他选项进行 ajax 调用。
      猜你喜欢
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 2015-08-23
      • 2010-09-28
      • 2018-03-17
      相关资源
      最近更新 更多