我想知道是否可以在视图页面(.html.erb)中定义会话变量的值并在控制器中使用它?
例如:
在订单控制器中,new.html.erb:
session[:amount] = @order.amount
付款控制器文件中的:
@amount = session[:amount]
我的控制器中有一个变量,它的值应根据我在其中一个视图中得到的变量进行更改。由于值存储在会话中,我需要在控制器中使用会话值。提前感谢您的描述和回复。
答案 0 :(得分:1)
在尝试时,我发现可以使用会话变量将参数从视图传递到控制器。我遇到的问题是由于变量值的类型。我使用了一个会话变量并使用" flood"更改了它的类型。功能,问题解决了。
我以一般形式提出问题,以了解有关会话变量的更多信息,但遗憾的是我没有收到正确答案。
答案 1 :(得分:0)
你说
其值应根据我得到的变量之一进行更改 意见
视图如何获得价值?
在视图中使用ruby不会有帮助,因为用户正在与HTML页面进行交互。您应该使用表单POST,可能是异步的,以进行服务器调用,这将把新值设置为rails会话。
然后你可以而且应该从控制器而不是从视图中做到这一点。是的,您可以在rails会话中存储值。
此外,如果您不确定问题出在哪里(会话使用或Stripe API使用),我建议您将两个问题分开来找出解决方案。 例如,尝试在一个控制器方法中设置会话中的任何硬编码值,然后在另一个控制器方法中读取它。如果有效,请将其与Stripe结合使用。
答案 2 :(得分:-1)
您面临的问题是跨多个请求拥有持久性数据。
您无法在rails视图中设置会话。因为会话的整个原则是在服务器端拥有持久数据。要解决您的问题,您可以使用cookie。 Cookie用于在客户端的请求中存储持久数据,并随每个服务器请求发送到服务器。在视图中设置cookie并在控制器中使用它将满足您的目的。