Предоставление 'TemplateError' не может преобразовать строку в целое число - PullRequest
0 голосов
/ 09 марта 2011

Я недавно перенес свое приложение из 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 Ответ

1 голос
/ 09 марта 2011

Решение 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'

Happy Rails-ing!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...