使用 link_to Rails 设置会话变量

Posted

技术标签:

【中文标题】使用 link_to Rails 设置会话变量【英文标题】:Set session variable with link_to Rails 【发布时间】:2012-08-16 03:24:27 【问题描述】:

是否可以使用 link_to 设置会话变量?我不想设置参数,因为我有几个重定向,它会被清除。

即我想通过链接将会话变量“modelid”设置为“you”。

我想在 FB 登录 oauth 运行时设置会话变量...

<%= link_to "New Post", "#", :class => "btn btn-primary btn-large inline pull-left", :onclick => "FB.login(function(response),perms:'email, publish_stream, user_photos');"  %>

【问题讨论】:

【参考方案1】:

您可以在其中一个控制器中创建一个设置此会话变量的操作,然后使用 AJAX 请求调用它。

路线:

post "/myroute", :to=>"some_controller#set_my_session_var"

some_view.html.erb(jQuery 示例):

$(function()
  $("#my-button").click(function()
    $.post('/myroute');
  )
)

some_controller.rb:

def set_my_session_var
  session[:somekey]='somevalue'
end

【讨论】:

我正在控制器的方法中设置会话变量,并尝试在另一个控制器中访问相同的变量。但它告诉我价值为零!我在设置时检查了变量中是否设置了值 您究竟向 /myroute 操作发送了什么?或者换句话说,如何将数据发送到该操作 我有同样的问题,在设置会话值的方法上重定向后设置值不再存在。

以上是关于使用 link_to Rails 设置会话变量的主要内容,如果未能解决你的问题,请参考以下文章

Rails 4:使用 link_to 切换布尔值

Rails如何将link_to用于外部网站并使用块?

在这种情况下,如何以 RESTfully 方式使用 Rails 帮助程序 link_to?

Rails 5使用link_to更新日期

在rails中带有jquery参数的link_to

Rails 3 - link_to 使用 jquery ajax 调用部分