我是rails的新手,我正在尝试创建一个应用,其中用户可以属于许多团队,团队包含许多用户。这是我的模型类和迁移页面。我正在尝试创建一个注册页面,您可以在其中单击不同的团队来分配用户。拥有默认的无团队将很好地实施。
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
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.references :teams
t.timestamps
end
end
end
class CreateTeams < ActiveRecord::Migration
def change
create_table :teams do |t|
t.string :name
t.references :users
t.timestamps
end
end
end
以下是我的控制器中用于创建方法的代码
def create
@users = User.all
@user = User.new(params[:user])
if @user.save
flash.keep[:success] = @user.name + " Added to list of Users!"
redirect_to users_path
else
render 'index'
end
end
以下是我的视图文件中的代码
<% for team in @teams %>
<%= check_box_tag 'user[team]', team.name, @user.team_name.include?(team.name)%>
<%= team.name -%>
<% end %>
然而输出只是“团队”。我不确定该值是否实际传递到对象上。
编辑:我只需要阅读复选框doc表。导致问题的参数可能已经变为true和false,因为initlized值。
答案 0 :(得分:1)
也许因为这里没有用于用户对象的`team_name方法?你的意思是吗?
@user.teams.map(&:name).include?(team.name)
甚至更好
@user.teams.include?(team)