Это хорошо прийти в этом простом случае поставить определенную логику в представлении, но, как правило, лучше для добавления вспомогательных методов (прочесть руководство Getting Started - хорошая идея).
Возможно, вы уже видели каталог приложений/помощников, в этих вспомогательных файлах вы можете определить методы, доступные на уровне представления, методы, относящиеся к слою представления, но делать вещи, которые были бы странными или грязными для размещения в шаблонах файлы.
Например, в вашем случае, вы могли бы иметь /app/helpers/time_helper.rb
:
module TimeHelper
# I know the method name sucks a little
def show_hello_if_minutes_is_23(minutes = @minutes)
if minutes==23
"Hello"
else
"Anonymous"
end
end
end
, а затем использовать в index.html.erb
шаблона:
<%= show_hello_if_minutes_is_23 %>
Как вы можете видеть:
- Вы можете прочитать имя метода и понять, что он делает (на высоком уровне)
- логика ставится в методе рубинового
- Метод взять
minutes
аргумент, но это необязательно
И помните: как правило, повторение зла (Сухую вещь), но в поле зрения-земля иногда один раз слишком много (нет в этом простом случае однако).
UPDATE: Я только что видел, что вы положили значение переменной @minutes
на 23, а затем перезаписали его, сделав предыдущее назначение бесполезным. Я не знаю, что вы пытаетесь сделать в своем контроллере, но если ваш вопрос заключается в том, что значение по умолчанию для переменной минут переходит с Yuri's answer и используйте оператор ||=
: @minutes ||= params[:minutes]
.
Думаю, никто не понимает, о чем вы просите. – ABrukish
Привет, добро пожаловать в StackOverflow, я отредактировал ваш вопрос с помощью кода из сути и добавил ваше сомнение (взятое из сути) о том, как это сделать правильно, о чем, вероятно, ваш вопрос. –
Нужно еще одно голосование, чтобы одобрить редактирование (новая функция SO?) – DGM