0

我是 Rails 新手,我正在尝试创建一个应用程序,其中用户可以属于许多团队并且团队包含许多用户。这是我的模型类和迁移页面。我正在尝试制作一个注册页面,您可以在其中单击不同的团队来分配用户。拥有一个默认的 none 团队会很好实施。

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 %>

但是输出只是“团队”。我不确定这个值是否真的被传递给了对象。

编辑:我只需要阅读复选框文档表。导致问题的参数可能已经被初始化为 true 和 false 。

4

1 回答 1

1

也许是因为这里没有用户对象的`team_name 方法?你的意思是也许?

@user.teams.map(&:name).include?(team.name)

甚至更好

@user.teams.include?(team)
于 2013-06-24T23:27:01.423 回答