我最近将我的应用程序从Rails2转移到了Rails3。
'app / views / distribution / index.html.erb'中的代码如下: -
<div style="padding-bottom:10px; padding-left:0px;float:left;display:<%= (!session[:album][@artist.id.to_s].empty? && !session[:album][@artist.id.to_s].nil?)?'block' : 'none' %>" id = "make_payment_enabled">
<%= link_to 'Make Payments',{:action => 'pay', :album=>@album.id}, :class => "button" %>
</div>
它在线给我TemplateError: -
<div style="padding-bottom:10px; padding-left:0px;float:left;display:<%= (!session[:album][@artist.id.to_s].empty? && !session[:album][@artist.id.to_s].nil?)?'block' : 'none' %>" id = "make_payment_enabled">
如何解决问题?
答案 0 :(得分:1)
解决方案1:在ERB代码中,尝试在“或”问号周围添加空格,即....nil?) ? 'block...
。
解决方案更好:执行第一步,然后将该代码放入帮助程序中。真的有助于清理你的观点。
<强>更新强>:
其他一些提示:您需要切换条件的顺序,因为在检查它是否为空字符串之前,您需要查看值是否为nil
。
调用obj.blank?
相当于调用obj.nil? && obj.empty?
,这样可以缩短代码。更好的是,obj.present?
与!obj.blank?
相同。
因此,该行可以简化为:
session[:album][@artist.id.to_s].present? ? 'block' : 'none'
快乐的Rails!