2013-03-23 2 views
1

Вот мой код:GSUB строка только если строка имеет значение

<a href="<%= foo_path(foo) %>" class="<%= foo.roles.empty? ? foo.roles.gsub(',', ' ') : "" %>"> 

undefined method `empty?' for nil:NilClass 

Я просто хочу, чтобы вывести GSUB строки, если есть что-то внутри roles, если нет, то просто выплевывают пустую строку.

Любые предложения?

+1

Даже если ваш «пустой?» не взорвался на ноль, у вас есть то, и другие пути вашего троица отменили. – dbenhur

+0

Ahh логика в поле зрения! Поместите его в презентатора или помощника. –

+0

@AndrewMarshall: Где бы я поставил помощника? Можете ли вы написать небольшой пример (так как это * - простой пример использования) в качестве ответа? – sergserg

ответ

3

nil.to_s =>'', и ваша замена не имеет никакого эффекта на пустой строке, так что вы можете полностью пропустить тест empty? как так:

<a href="<%= foo_path(foo) %>" class="<%= foo.roles.to_s.gsub(',', ' ') %>"> 
0

Используйте blank?method

<a href="<%= foo_path(foo) %>" class="<%= foo.roles.blank? ? "" : foo.roles.gsub(',', ' ') %>"> 
Смежные вопросы