如何在视图中执行此HABTM控制台关联

时间:2015-04-12 16:11:41

标签: ruby-on-rails activerecord

我有一个用户模型,以及两个继承自该模型的模型:教师和学生。它们还有自己的控制器,可以从用户控制器继承。

我也有一个群组模型。

小组属于老师,老师有很多小组。小组拥有并且属于许多学生。学生拥有并属于许多团体。

有一个HABTM关系的连接表,称为“groups_students”。

我设法创建了一个表单元素,允许我将User的'type'设置为'Student'或'Teacher'。

我现在遇到的困难是将学生分配到视图中的小组。我可以在控制台中执行此操作没有问题,如下所述:Rails 4 HABTM how to set multiple ids in console?

我对如何在视图中执行此操作感到难过。我想在学生的节目视图中这样做。

有人至少可以给我一些指导吗?我有一本关于Rails的好书,但我需要大致了解我必须做的事情。

1 个答案:

答案 0 :(得分:0)

最后我实际上付钱给别人为我解决了这个问题,因为我无法在互联网上找到任何免费帮助。值得庆幸的是,他并没有太容易解决问题,但他解决了这个问题:

视图/用户/ show.html.erb:

<%= form_tag assign_to_group_path do %>
  <%= hidden_field_tag :user_id, @user.id %>
  <%= select_tag :group_id, options_from_collection_for_select(Group.all, "id", "title") %>
  <%= submit_tag "Assign to Class" %>
<% end %>

users_controller.rb:

private
def user_params
  params[:user].permit(:type) if params[:user]
end

students_controller.rb(继承自users_controller.rb):

def assign_to_group
  @user = User.find(params[:user_id])
  @group = Group.find(params[:group_id])
  @user.groups << @group unless @user.groups.include? @group
  @user.save!
  redirect_to user_path @user
end

routes.rb中:

post 'assign_to_group' => 'students#assign_to_group'