2011-03-09 55 views
0

我最近将我的应用程序从Rails2转移到Rails3。给'TemplateError'不能将字符串转换为整数

在 '应用程序/视图/分销/ 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

解决方案1:在ERB标签中,尝试在'或'问号周围放置空格,即....nil?) ? 'block...

解决方案更好:做第一步,然后将该代码放入助手。真的会帮助清理你的观点。


UPDATE

一些其他提示:你将要切换的条件的顺序,因为你将要看到,如果值是nil检查,如果它是一个空字符串之前。

调用obj.blank?相当于调用obj.nil? && obj.empty?,这样可以使代码更短一些。更好的是,obj.present?!obj.blank?相同。

因此,该行可以简化为:

session[:album][@artist.id.to_s].present? ? 'block' : 'none' 

快乐的Rails-ING!