Ruby on rails 这是一种丑陋而怪异的行为
我有以下助手:Ruby on rails 这是一种丑陋而怪异的行为,ruby-on-rails,ruby,haml,Ruby On Rails,Ruby,Haml,我有以下助手: def feeder value=true if feeder? == value haml_tag :span, :<, :class => 'selected' do yield end else yield end end 这在haml非丑陋模式(开发环境==haml缩进代码)中可以正常工作。 但是,在生产模式下(例如,haml丑陋渲染),我得到以下html: <h1> <a href="/l
def feeder value=true
if feeder? == value
haml_tag :span, :<, :class => 'selected' do
yield
end
else
yield
end
end
这在haml非丑陋模式(开发环境==haml缩进代码)中可以正常工作。
但是,在生产模式下(例如,haml丑陋渲染),我得到以下html:
<h1>
<a href="/leda/">Leda</a>
<!-- THIS SHOULD NOT BE HERE >>> -->
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Feeder</title>
<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="8kp4xt6ZJU2nL5uLgVBW6BcB/RTA75QwynKvZTMtNF8="/>
<link href="/leda/stylesheets/jquery-ui/smoothness/jquery-ui.css?1297978005" media="screen" rel="stylesheet" type="text/css" />
<link href="/leda/stylesheets/admin.css?1298951622" media="screen" rel="stylesheet" type="text/css" />
<script src="/leda/javascripts/jquery.js?1297978005" type="text/javascript"></script>
<script src="/leda/javascripts/jquery-ui.js?1297978004" type="text/javascript"></script>
<script src="/leda/javascripts/rails.js?1297978005" type="text/javascript"></script>
<script src="/leda/javascripts/application.js?1300153136" type="text/javascript"></script>
</head>
<body>
<div id='wrapper'>
<div id='header'>
<h1>
<a href="/leda/">Leda</a>
<!-- <<< END -->
»
<span class='selected'><a href="/leda/servers/GVM-S1">gvm1</a></span>
</h1>
解决了这个问题,但我不可能理解为什么/如何解决。更让人困惑的是,它只会在haml丑陋的渲染模式下失败。为什么不在视图中这样做呢
%span{:class => blah.feeder? && "selected"}= link_to 'Blah', blah
(这方面的haml文档是正确的。)
您的助手版本似乎过于复杂
else
haml_tag :span do
yield
end
end
%span{:class => blah.feeder? && "selected"}= link_to 'Blah', blah