我试图在视图中使用控制器实例变量的值。该变量的值将根据会话变量的值而改变。我在测试它,我注意到,如果我在一个特定的位置设置变量,它总是出现为nil。
我使用设计进行身份验证,每次我在最后一个设计函数后设置变量时,它出现为nil。但是当我把它放在任何地方,它都显示得很好。我只是觉得很奇怪,想知道为什么会这样。除了我设置实例变量之外,其他一切都很好,它与设计身份验证完全分开。
@prop是我要设置的变量。如果我这样设置,当我试图引用视图中的值时它会显示为nil
def new
self.resource = resource_class.new(sign_in_params)
clean_up_passwords(resource)
yield resource if block_given?
respond_with(resource, serialize_options(resource))
@prop = "test value"
end
但是当我像这样设置它或respond_with
之前的任何其他行时,我在视图中得到正确的值。
def new
@prop = "test value"
self.resource = resource_class.new(sign_in_params)
clean_up_passwords(resource)
yield resource if block_given?
respond_with(resource, serialize_options(resource))
end
谢谢
respond_with
正在触发响应器并使视图呈现。当你在respond_with
之后放置另一个变量时,视图将无法识别它。