使用if语句为不同页面导出不同的标题,但标题仍然存在

时间:2014-02-03 04:57:29

标签: html ruby-on-rails layout header

我写了一个简单的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 %> 

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您实际上不需要在true语句中将变量与if布尔值进行比较。但是对于您的情况,您使用的是赋值运算符=,要么将它们更改为比较运算符==,要么从所有= trueif语句中删除elsif

答案 1 :(得分:0)

x = true是一项任务。您正在为x分配true。它总会成功。您希望x == true测试相等性。

= vs ==