0

我有一个员工模型如下:

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,我只需要添加资格并单击创建。

4

2 回答 2

0

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

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

于 2013-02-04T13:07:13.273 回答
0

感谢所有的帮助......

这就是最终奏效的方法:

我将此添加到我的资格控制器中...

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 .....

一切都很好:) ...谢谢大家的帮助...我在这里发帖这样像我的问题这样的人将来可以解决:D ...

问候

于 2013-02-05T06:56:25.513 回答