给'TemplateError'不能将String转换为Integer

时间:2011-03-09 07:50:00

标签: ruby-on-rails-3

我最近将我的应用程序从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">

如何解决问题?

1 个答案:

答案 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!