【问题标题】:Populate a select box with user names使用用户名填充选择框
【发布时间】:2013-08-07 09:22:15
【问题描述】:

在我看来,我有一个带有选择的表单

    <%= label_tag("employee_names", "Employees") %>
    <%= select_tag("employee_names", params[:employee_names]) %>

然后我有一堆用户,这些用户有一个名字 user.name 和一个 ID user.id

我在控制器中有一个方法,当给定用户 ID 时,它会将我的列表缩小到特定的用户对象。

    if params[:employee_names].present?
      @time_sheets = @time_sheets.joins(:user).where("users.id IN (?)", params[:employee_names])
    end

所以我遇到的问题是,我不确定如何使用用户名列表填充我的选择框。然后在提交时,我需要它为该方法提供用户 ID。这样做的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    我认为options_from_collection_for_select 应该为您解决问题。

    更多:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_from_collection_for_select

    select_tag :employees, options_from_collection_for_select(@employees, 'id', 'name')
    

    【讨论】:

    • 我收到“nil:NilClass 的未定义方法 `map'”错误,不确定是什么原因
    • 你的整个表单是什么样子的?
    • 你从哪里得到“employee_names”?您可以从控制器发布相关代码吗?您必须更新上述 options_from_collection_for_select 以使用带有用户名和 ID 的集合。
    • 我随意选择了employee_names,来自控制器的唯一代码就是我在上面发布的代码
    【解决方案2】:

    您正在寻找collection_select

    <%= collection_select(:employee, :employee_id, @time_sheets, :id, 'Employees') %>
    

    【讨论】:

    • 我收到“nil:NilClass 的未定义方法 `map'”错误,不确定是什么原因
    • 我拼错了您的 @time_sheets 实例变量。我没有包括下划线。立即尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 2013-06-28
    相关资源
    最近更新 更多