在我的视图中,我有一个带有text_field_tag的表单,它接受一个int,并只返回timesheet.user_id与int匹配的时间表
<%= text_field_tag("user_id", params[:user_id]) %>
然后我有很多用户,这些用户的名称为user.name
,ID为user.id
。
我在控制器中有一个名为pending_approvals的方法,当给定用户ID时,将我的列表缩小到特定的用户对象。
if params[:user_id].present?
@time_sheets = @time_sheets.joins(:user).where("users.id IN (?)", params[:user_id])
end
所以我遇到的问题是,我不知道如何使用用户名列表填充我的选择框。然后在提交时我需要它给用户id该方法。这样做的最佳方式是什么?
答案 0 :(得分:0)
如果我理解正确,您需要一个集合下拉列表来详细说明所有用户及其ID。你可以这样做:
<%= collection_select :user, :user_id, @users, :name, :id, :prompt => true %>
其中:text_method是调用@users成员的方法将返回您想要在下拉列表中显示的文本。
ApiDocs将其分解,这就是它的设置方式:
object = User
method = user_id
collection @users
value_method = id
text_method = name
option = prompt => true