0

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

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

4

1 回答 1

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 %>
于 2012-05-03T11:04:02.103 回答