我如何使用groups_select group_method和范围?

时间:2012-05-03 08:55:16

标签: ruby-on-rails ruby-on-rails-3 forms scope simple-form

我尝试将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) %>

这是一种常见做法,还是有其他方法可以满足我的需求?

1 个答案:

答案 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 %>