首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby on Rails,选择框并选择多个,插入到数据库中

Ruby on Rails,选择框并选择多个,插入到数据库中
EN

Stack Overflow用户
提问于 2014-05-06 18:54:04
回答 2查看 713关注 0票数 0

我有一个模型,其中用户可以是多个项目的独立部分,并且项目可以有多个用户。它们由一个名为project_users的表连接在一起。在我的新项目表单中,我有一个显示当前用户的所有用户名的选择框,并且可以选择多个用户名。如何为所选的每个用户在project_users中添加条目?(或者如果有更好的方法对我的数据建模,请让我知道……)

代码语言:javascript
运行
复制
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中,我有:

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
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中?

EN

Stack Overflow用户

发布于 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

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23492716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档