Где разместить код, который генерирует выбранные параметры - PullRequest
0 голосов
/ 08 июля 2010

У меня есть выпадающий список, где я генерирую опции из записей базы данных, затем добавляю опцию в начало, например:

@select = Service.find_services_by_id(id).collect { |p| [p.name, p.id] }
@select.unshift( [ "Choose a service", 0] )

Тогда в представлении HAML у меня есть:

=select_tag "service_id", options_for_select(@select)

Но я смотрю на рефакторинг, который либо:

1) Добавление в модель другого метода, который также выполняет операцию unshift, чтобы вернуть мне все данные для выбора одним куском

2) Перемещение всего определения @select в помощник вида и вызов его из вида

3) Просто введите первую строку @select в контроллере, а затем помощник вида выполните часть unshift

Но мне трудно понять, в чем смысл. Мысли

Ответы [ 2 ]

0 голосов
/ 08 июля 2010

Я бы пошел на 3-й, но не только сделал unshift в помощнике, но и создал там целую select штуку:

module SomeHelper
  def service_select(objects)
    select_tag "service_id", options_for_select(objects.unshift(["Select a service", 0]))
  end
end

Тогда вы просто позвоните =service_select(@select).

0 голосов
/ 08 июля 2010

1) не имеет большого смысла. Модель не должна прикреплять заголовки к данным, чтобы привести их в порядок - это задача представления.

2) и 3) оба разумны - я лично склоняюсь к 3), но любой из них хорош.

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