我尝试将groups_selects group_method与自定义范围一起使用。用户只能看到他所属的项目和任务。
这是有效的,我得到了所有项目与任务选择:
# using simple_form
<%= f.input :project_id, :as => :grouped_select,
:collection => Project.my_scope(current_user),
:group_method => :tasks %>
这不起作用。我尝试从my_scope获取任务。
# using simple_form
<%= f.input :project_id, :as => :grouped_select,
:collection => Project.my_scope(current_user),
:group_method => Task.my_scope(current_user) %>
更新
我还尝试使用rails default helper,这似乎有效:
<%= f.grouped_collection_select(:project_id,
Project.my_scope(current_user),
:"tasks.my_scope(#{current_user.id})",
:name, :id, :name) %>
这是一种常见做法,还是有其他方法可以满足我的需求?
答案 0 :(得分:3)
它不起作用,因为:group_method
指定要调用的方法,通过返回的内容对选择进行分组
因此不能在那里使用范围。你想达到什么结果?可能你可以限制你的收藏 - 如果你只想显示带有current_user任务的项目(只是假设) 然后你就可以这样做了
# using simple_form
<%= f.input :project_id, :as => :grouped_select,
:collection => Project.my_scope(current_user).joins(:tasks).where(:assigned_to => current_user),
:group_method => :task %>