我是ROR的新手。
我有一个控制器
class Controllername < application
def method1
@obj = API_CALL
redirect_to redirect_url #calls the API authorization end point
#and redirects to action method2
end
def method2 #redirection to this action
@obj.somemethod #this value is null
end
end
我的问题是当我使用Instance变量或类变量@obj或@@ obj在action method2中变为nil时。我希望这个值与method1中的值无关。
注意:SESSION注释帮助,因为它给出了SSL错误。
非常感谢任何帮助。
答案 0 :(得分:1)
使用实例变量的原因不起作用,因为该类的实例仅存在于method1
或method2
方法中。
你可以做的是使用类变量。您可以使用class_variable_set(:@@class_variable_name, value)
设置它们,然后再次使用class_variable_get(::@@class_variable_name)
。在你的情况下它看起来像这样:
class Controllername < application
def method1
class_variable_set(:@@api_call_data, API_CALL)
redirect_to redirect_url #calls the API authorization end point
#and redirects to action method2
end
def method2 #redirection to this action
class_variable_get(:@@api_call_data).somemethod #this value is null
end
end
原因只有当数据对于每个用户都相同时才有效,如果数据是用户特定的,则需要使用特定于用户的类变量名称。