我写了一个简单的if语句,根据用户所在的页面改变标题,如下所示:
<% if @miscpage = true %>
<%= render 'layouts/mischeader' %>
<% elsif @gallerypage = true %>
<%= render 'layouts/galleryhead' %>
<% elsif @photopage = true %>
<%= render 'layouts/photoheader' %>
<% end %>
然后在特定页面的控制器中,@变量设置为true。问题是,每当我去任何其他页面时,误导者仍然存在。就像应用程序布局没有重置渲染过程一样。
我已经通过切换上面if语句的顺序对此进行了测试,实际上如果首先评估@ photopage = true,那么它将是所有页面中持续存在的photoheader。
我通过编写下面的单独if语句进一步测试,实际上,现在我在访问了miscpage和photopage之后得到了两个标题。
<% if @miscpage = true %>
<%= render 'layouts/mischeader' %>
<% end %>
<% if @gallerypage = true %>
<%= render 'layouts/galleryhead' %>
<% end %>
<% if @photopage = true %>
<%= render 'layouts/photoheader' %>
<% end %>
知道如何解决这个问题吗?
答案 0 :(得分:1)
您实际上不需要在true
语句中将变量与if
布尔值进行比较。但是对于您的情况,您使用的是赋值运算符=
,要么将它们更改为比较运算符==
,要么从所有= true
和if
语句中删除elsif
。
答案 1 :(得分:0)
x = true
是一项任务。您正在为x分配true。它总会成功。您希望x == true
测试相等性。
=
vs ==