我有两个模型:User
和Role
。
用户属性为:
name:string
email:string
admin:boolean
role_id:integer
角色属性是:
designer:boolean
developer:boolean
我设置的关联是用户belongs_to
角色和角色has_many
用户。
当用户注册时,我希望他选择自己的位置(设计师或开发人员)。但是,当我想显示可供选择的位置(设计者和开发者)时,我将role_id
作为整数字段。任何人都可以帮我吗?
答案 0 :(得分:0)
您想要做的是“Nested Models”。
首先,您必须告诉模型允许其他模型:
# 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
我希望这会有所帮助 快乐黑客