Rails将id从一个模型复制到另一个模型

时间:2013-02-04 12:39:11

标签: ruby-on-rails foreign-keys record rails-activerecord

我有一个员工模型如下:

class Employee < ActiveRecord::Base
  attr_accessible :blood_group_id, :caste_id, :category_id, :emp_dob, :emp_email,     :emp_fathername, :emp_fname, :emp_full_name, :gender_id, :emp_id, :emp_lname, :emp_loc_master_id, :emp_mname, :emp_mobile_no, :emp_permanent_address, :emp_phone_no, :religion_id

  has_many:postings
  has_many:dependents
  has_many:qualifications

  belongs_to:gender
  belongs_to:category
  belongs_to:religion
  belongs_to:caste
  belongs_to:blood_group
end

以及资格模型:

class Qualification < ActiveRecord::Base
              attr_accessible :Remarks, :employee_id, :qualification_name_id, :qualification_type_id, :specialisation_id, :university_id, :year

              belongs_to:employee
              belongs_to:qualification_type
              belongs_to:qualification_name
              belongs_to:specialisation
              belongs_to:university
            end

所有关联都是正确的。现在我可以通过员工表格创建一名新员工,并且我可以通过资格表格(明确)并从下拉列表中选择员工并给予他资格来给他资格。

但我想做的是: 创建一个“添加资格”按钮,允许我向观察下的员工添加资格并隐式获取员工ID,我只需要添加资格并单击创建。

2 个答案:

答案 0 :(得分:0)

使用动态表单,将数据发送到控制器,解析数据服务器端。 我建议使用KnockoutJS,这是一个类似的例子:

http://knockoutjs.com/examples/contactsEditor.html

答案 1 :(得分:0)

Thnx获得所有帮助......

这是最终奏效的:

我把它添加到我的资格控制器......

class QualificationsController < InheritedResources::Base
def new
    @qualification = Qualification.new(:employee_id => params[:id])
end

def create
    @qualification = Qualification.new(params[:qualification])
        respond_to do |format|
          if @qualification.save
            format.html { redirect_to @qualification, notice: 'Qualification was successfully created.' }
            format.json { render json: @qualification, status: :created, location: @qualification }
          else
            format.html { render action: "new" }
            format.json { render json: @qualification.errors, status: :unprocessable_entity }
          end
        end
end
end

然后我将其添加到我的employee_show视图页面......

<%= link_to "Add A New Qualification for this Employee", new_qualification_url(:id => @employee.id) %>

我将此添加到我的资格表格中:

 <%= simple_form_for @qualification, :html => { :class => 'form-horizontal' } do |f| %>

  <%= f.association :employee,label_method: :emp_full_name, value_method: :id, include_blank: false, :as => :hidden%>
<%= f.association :employee,label_method: :emp_full_name, value_method: :id, include_blank: false, disabled: true%>

在添加员工之后,这有助于我回到我来自的地方:

<%= link_to t('.back', :default => t("helpers.links.back")),
          employee_path(@qualification.employee_id), :class => 'btn'  %>

我使用simple_form这是一个很棒的DSL FTW:D:D:D .....

一切都很好,因为想要:) ... Thnx为大家提供帮助...... 我发布在这里,所以像我这样的问题可以在将来解决:D ...

此致