-2

我有两个模型:UserRole. 用户属性是:

name:string
email:string 
admin:boolean 
role_id:integer

角色属性是:

designer:boolean 
developer:boolean

我设置的关联是用户belongs_to角色和角色has_many用户。当用户注册时,我希望他选择他的职位(设计师或开发人员)。但是,role_id当我想显示可供选择的职位(设计师和开发人员)时,我会得到一个整数字段。任何人都可以帮助我吗?

4

1 回答 1

0

你想要做的就是所谓的“嵌套模型”。

首先,您必须告诉模型允许其他模型是这样的:

# app/model/user.rb
class User < ActiveRecord::Base
  belongs_to :role
  accepts_nested_attributes_for :role
end

下一件事在你看来

#app/views/users/new.html.ham
= simple_form_for @user do |f| 
  = f.input :name
  = f.input :email
  %br
  = f.simple_fields_for :role do |role|
    = role.input :designer
    = role.input :developer
  = f.button :submit, "Send Message", :class => 'btn btn-primary btn-block'

现在最后但最不重要的是你能够接受控制器中的新参数

class UsersController < ApplicationController
  expose(:users){User.all.order(:id)}
  expose(:user, attributes: :user_params)

  def new
    @user = User.new
    @user.role.build
  end

  def create
    if user.save
      flash[:notice] = t(:user_was_successfully_created)
      redirect_to root_path
    else
      render :new
    end
  end

  private
  def user_params
    params.require(:user).permit(
      [
        :email ,
        :name ,
        role_attributes: [
          :designer,
          :developer,
        ]
      ]
    )
  end
end

您可以查看示例应用程序https://github.com/mzaragoza/sample_nestes_forms

我希望这有助于快乐黑客

于 2016-04-16T12:39:16.593 回答