我是铁杆的新手,很抱歉这个愚蠢的问题。
我有3个模型,员工,雇主和钥匙串模型。
钥匙串属于雇员和雇主。
并且雇员和雇主有许多钥匙链
我想在创建操作中设置employee_id,但我遇到了麻烦。
class Keychain < ActiveRecord::Base
validates :title, :presence => {:message => 'cannot be blank'}
attr_accessible :employee_id, :employer_id, :issued, :revoked, :title
belongs_to :employer
belongs_to :employee
end
这是钥匙串的创建动作
def add_keychain
@keychain = Keychain.create(params[:keychain])
@keychain.employer_id = current_employer.id
@keychain.employee_id =
@keychain.title = params[:title]
@keychain.save
redirect_to employees_path
end
模式
create_table "keychains", :force => true do |t|
t.string "title"
t.date "issued"
t.boolean "revoked"
t.integer "employee_id"
t.integer "employer_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
端
表格是员工的展示行动。我可以通过&lt;%= @ employee.id%&gt;获得当前员工的ID
但是我无法在创建动作中获得id。
再次抱歉新手问题。
答案 0 :(得分:0)
我用于传递employee_id之类的外键的技术是在表单中使用隐藏字段。
在您的Employees控制器中可能是这样的:
class EmployeesController < ApplicationController
def show
@employee = Employee.find(params[:id])
@key_chain = @employee.key_chains.build() #@key_chain has @employee's id now.
end
end
您的员工#显示视图中的钥匙串嵌入式表单:
<%= form_for(@key_chain) do |f| %>
<%= f.hidden_field :employee_id %>
<%= f.label "Title:" %>
<%= f.text_field :title %>
<%= f.submit %>
<% end %>
我配置的表单路由到KeyChains #Create控制器:
def create
@key_chain = KeyChain.new(key_chain_params)
respond_to do |format|
if @key_chain.save
format.html { redirect_to @key_chain, notice: 'Key chain was successfully created.' }
format.json { render :show, status: :created, location: @key_chain }
else
format.html { render :new }
format.json { render json: @key_chain.errors, status: :unprocessable_entity }
end
end
end