如果不工作,因为它包含在内

时间:2011-09-02 14:55:15

标签: ruby-on-rails

我有一个包含简单开关的助手。我知道我有它工作,因为它正在其他页面上工作。但是,在这个特定的页面上它不起作用..我认为它是因为在if else中有一个end,所以它早就结束了if else。这是代码:

我相信这部分正在发挥作用:

<% if popup == "off" %>
       <% content_for :main do %>
<% end %>

这部分不是那么多:

<% if popup == "off" %>
       <% end %>  << this end should be displayed if popup = off 
<% end %>

4 个答案:

答案 0 :(得分:3)

你可以这样做:

<% if popup == "off" %>
       <%= "<% end %>" %>  << this end should be displayed if popup = off 
<% end %>

或试试这个:

<% if popup == "off" %>
       &lt;% end %&gt;  << this end should be displayed if popup = off 
<% end %>

答案 1 :(得分:0)

如果您只想显示单词end,请不要将其括在标签中。标签中包含的任何内容都被解释为Ruby代码,任何内容都不会完全按原样打印。

<% if popup == "off" %>
   end  << this will now be interpreted as text, not ruby code
<% end %>

答案 2 :(得分:0)

ERB(和Ruby)不能那样工作。

我认为你正在试图将它视为将一个HTML标记而不是end结束到Ruby块,并希望这两个代码段之间的所有内容都在{{1}中运行阻止。

这就是你需要的。介于两者之间的所有内容都将包含在content_for块中:

content_for

答案 3 :(得分:0)

似乎所有关于执行<%= "<% end %>" %>会导致语法错误的建议。看起来很简单,最终只是重组我的应用并摆脱了<% content_for :main do %>

的要求