我正在建立一个模型,用户可以属于多个团队,团队中有多个人。 我有复选框,但它们没有将值传递给对象。
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 %>
但唯一的输出是“团队” 有人能告诉我我做错了吗?
答案 0 :(得分:1)
实际上,你不能以这种方式做多对多的关系...你需要做has_many :through
或者has_and_belongs_to_many
这里有很好的解释......