复选框为has_many关系

时间:2013-06-24 23:22:29

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

我是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值。

1 个答案:

答案 0 :(得分:1)

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

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

甚至更好

@user.teams.include?(team)