現在我正在創建一個有角色的工人。我有工人、角色和工人角色。現在我已經完成了創建作業人員表單并可以選擇角色。完成表格后,我需要將 role_id 和 worker_id 存盤在 worker_role 表中。我試過了,它回傳了一些錯誤。
工人控制器
def new
@worker = Worker.new
@worker.company_id = params[:company_id]
@role = Role.all
end
def create
@worker = Worker.new(worker_params)
@company_id = Company.find(params[:worker][:company_id])
@role_id = Role.all
if @worker.save
@worker_role = Role.find(params[:id]).worker_roles.create(worker: worker, returned: true)
#log_in @worker
flash[:success] = "Welcome to the Areca Supermarket System!"
redirect_to @worker
else
render 'new'
end
end
new.html.erb(表單)
<% provide(:title, "Register worker") %>
<h1>Create Worker</h1>
<div >
<div >
<%= form_with(model: @worker, local: true) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :phone_number %>
<%= f.number_field :phone_number, class: 'form-control' %>
<%= f.label :address %>
<%= f.text_field :address, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :role_id %>
<%= f.select(:role_id, Role.all.collect { |l| [ l.name, l.id] }, {class: "form-select"}) %>
<%= f.hidden_field :company_id , value: 2%>
<%= f.submit "Create worker", class: "btn btn-primary" %>
<% end %>
</div>
</div>
worker_role 模型
class WorkerRole < ApplicationRecord
belongs_to :worker
belongs_to :role
end
worker_role 遷移
create_table "worker_roles", force: :cascade do |t|
t.integer "worker_id"
t.integer "role_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
工人遷移
create_table "workers", force: :cascade do |t|
t.string "name"
t.string "email"
t.integer "phone_number"
t.string "address"
t.integer "company_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "password_digest"
t.boolean "admin", default: false
end
網站顯示錯誤
網站引數
uj5u.com熱心網友回復:
嗨,正如請求引數中提到的,我可以看到role_id您將引數傳遞為
引數:
params = {"authenticity_token"=>"[FILTERED]",“worker"=>{"name"=>"Daniel", "“email"=:“[email protected]", “phone_number"=:"Q134657891",“address"=>"Alor Setar", “password"=>"[FILTERED]", “role id"=>"1", “company _id"=:"2",“commit"=>"Create worker"}
#you can access the role ID as below:
params[:worker][:role_id]
但是您在控制器中使用它作為
@worker_role = Role.find(params[:id])
#this should be as below:
@worker_role = Role.find(params[:worker][:role_id]).worker_roles.create(worker: @worker)
# OR
#if you are permitting role id
@worker_role = Role.find(worker_params[:role_id]).worker_roles.create(worker: @worker)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/510029.html
標籤:轨道上的红宝石红宝石
上一篇:如何遞回地從哈希生成連接字串?
下一篇:陣列只包含一個特定的字串物件
