实例变量nil在特定位置

时间:2016-11-04 19:28:08

标签: ruby-on-rails view instance-variables

我正在尝试在视图中使用控制器实例变量的值。变量的值将根据会话变量的值而变化。我正在测试它,我注意到如果我将变量设置在一个特定的位置,它总是出现为零。

我正在使用Devise进行身份验证,每次在最后一个Devise函数之后设置变量时,它都会显示为nil。但当我把它放在任何其他地方它显示好。我只是觉得这很奇怪,想知道它为什么会发生。除了设置与Devise身份验证完全分开的实例变量外,其他所有工作都正常。

@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

感谢名单

1 个答案:

答案 0 :(得分:1)

respond_with正在触发响应者并使视图呈现。当您在respond_with之后放置另一个变量时,视图将无法识别它。