将复选框值传递给模型

时间:2013-06-25 01:19:54

标签: ruby-on-rails ruby ruby-on-rails-3

我正在建立一个模型,用户可以属于多个团队,团队中有多个人。 我有复选框,但它们没有将值传递给对象。

class User < ActiveRecord::Base
  attr_accessible :email, :name
  has_many :teams 
  accepts_nested_attributes_for :teams
end


class Team < ActiveRecord::Base
  has_many :users
  attr_accessible :name
end

这是我控制器中的代码

def create
@users = User.all
@user = User.new
@teams = Team.all
@user.attributes = {:teams => []}.merge(params[:user] || {})
end

以下是我的视图文件中的代码

<%= form_for @user, url: {action: "create"}  do |f| %>
<%= f.label :teams%>
<% for team in @teams %>
<%= check_box_tag team.name, team.name, false, :teams => team.name%>      
<%=  team.name -%>
<% end %>
<%= submit_tag "Create User" %>

我想把它展示到

<%= user.teams.name %>

但唯一的输出是“团队” 有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:1)

实际上,你不能以这种方式做多对多的关系...你需要做has_many :through或者has_and_belongs_to_many这里有很好的解释......

http://guides.rubyonrails.org/association_basics.html