代码之家  ›  专栏  ›  技术社区  ›  99miles

在何处放置生成select选项的代码

  •  0
  • 99miles  · 技术社区  · 15 年前

    我有一个选择下拉列表,在其中我从数据库条目生成选项,然后在开头添加一个选项,如:

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

    在哈姆勒的观点中,我有:

    =select_tag "service_id", options_for_select(@select)
    

    但我想通过以下方式重构它:

    1)在模型中添加另一个方法,该方法还执行取消滑动操作,以将选择的所有数据返回给我。

    2)将整个@select定义移动到视图助手并从视图调用它

    3)只需在控制器中使用第一个@select行,然后让视图助手执行“取消滑动”部分。

    但我很难弄清楚什么是最有意义的。思想?

    2 回复  |  直到 15 年前
        1
  •  0
  •   Eimantas    15 年前

    我要去第三个,但不仅仅是 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) .

        2
  •  0
  •   Anon.    15 年前

    1)没什么意义。模型不应该在数据上贴头来修饰它——这是视图的工作。

    2)和3)都是合理的-我个人倾向于3),但任何一个都是好的。