【问题标题】:Ruby on Rails Joining Two Strings in Dropdown TextRuby on Rails 在下拉文本中连接两个字符串
【发布时间】:2015-03-20 13:18:00
【问题描述】:

我有一个 ruby​​ on rails 网站,其中有一个名为“会议”的页面。这些会议目前运行良好,但我想更改其中一个下拉菜单显示其数据的方式。目前,我的控制器/视图中有这个:

控制器

@meeting_times = MeetingTime.select("id, meeting_type, meeting_at").where("
  (meeting_at > ?)", Time.now + 1.week).order("meeting_at")

查看

<%= f.select :meeting_time_id, options_from_collection_for_select
  (@meeting_times, "id", "meeting_at") %>

目前,如您所见,下拉菜单仅显示会议时间。我想要做的是让下拉列表在一个字符串中显示 meeting_type + meeting_time。这听起来很简单,但是 meeting_type 是一个 int 值。所以,我需要说“如果 meeting_type == 0 则显示 'Staff Meeting' + meeting_time”,依此类推。如何在不更改 meeting_type 的数据库值的情况下完成此操作?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 drop-down-menu


    【解决方案1】:

    MeetingTime 模型中的创建方法

    def meeting_time_display
       "#{meeting_type_names[meeting_type]} #{meeting_at}"
    end
    
    private
    
    def meeting_type_names
       @@m_type_names ||= ['Staff Meeting', 'Type 2', ..., 'Type n']
    end
    

    视图调用

    <%= f.select :meeting_time_id, options_from_collection_for_select (@meeting_times, "id", "meeting_time_display") %>
    

    【讨论】:

    • 为了更好的风格,应该把这个逻辑放到装饰器中
    猜你喜欢
    • 2013-06-28
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多