将User_id设置为create action rails

时间:2014-10-09 15:29:13

标签: ruby-on-rails-3

我是铁杆的新手,很抱歉这个愚蠢的问题。

我有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。

再次抱歉新手问题。

1 个答案:

答案 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