我有一个模型,其中用户可以是多个项目的独立部分,并且项目可以有多个用户。它们由一个名为project_users的表连接在一起。在我的新项目表单中,我有一个显示当前用户的所有用户名的选择框,并且可以选择多个用户名。如何为所选的每个用户在project_users中添加条目?(或者如果有更好的方法对我的数据建模,请让我知道……)
class Project < ActiveRecord::Base
     has_many :project_users
     has_many :users, :through => :project_users
end
class ProjectUser < ActiveRecord::Base
     has_one :project 
     has_one :user
     belongs_to :project
     belongs_to :user
end
class User < ActiveRecord::Base
    has_many :project_users
    has_many :users, :through => :project_users
end在我的项目_form.html.erb中,我有:
<div class="field">
    <%= "Users assigned to project" %>
    <%= select_tag("user[user_id]", options_from_collection_for_select(User.find(:all), 'id', 'username')) %>
</div>这将使用所有用户的用户名填充选择框。
projects_controller.rb
def create
@project = Project.new(project_params)
@project_count = Project.count + 1
@project_user = ProjectUser.new
@project_user.user_id = current_user.id
@project_user.project_id = @project_count
respond_to do |format|
  if @project.save
    if @project_user.save
      format.html { redirect_to @project, notice: 'Project was successfully created.' }
      format.json { render action: 'show', status: :created, location: @project }
        else
      format.html { render action: 'new' }
      format.json { render json: @project.errors, status: :unprocessable_entity }
    end
    format.html { redirect_to @project, notice: 'Project was successfully created.' }
    format.json { render action: 'show', status: :created, location: @project }
  else
    format.html { render action: 'new' }
    format.json { render json: @project.errors, status: :unprocessable_entity }
  end
end
end
def project_params
  params.require(:project).permit(:name, :description, :user_id)
end我是Ruby on Rails的新手,所以任何帮助都是很棒的(或者相关文章的链接,我在过去两个小时的努力中都没有偶然发现……)
我现在已经更新了我的代码,可以正常工作,现在可以将用户添加到project_users!但是现在,我只有一个下拉框,这意味着我只能为每个项目选择一个用户。有没有一个选择框,可以选择多个用户?或者我必须编辑项目,并将它们逐个添加到project_users中?
发布于 2014-05-06 19:29:58
我还没有测试它,因为我没有在我的家庭电脑上设置,但它将是这样的。
@project = Project.new(name: params[:name], description: params[:description])  params[user_id].to_a.each do |user_id|      @project.project_users.build(user_id: user_id)  end
https://stackoverflow.com/questions/23492716
复制相似问题