2015-04-18 22 views
0

我有3个模型,其中员工has_many保险和员工has_many教育和保险和教育belongs_to员工。如何留在同一页上,当我点击侧栏链接在Rails

整个流程工作正常。

现在我有一个要求,当我点击员工 - >编辑时,我必须在保险和教育链接的编辑表单下显示一个侧栏。当我点击保险/教育时,它应该在同一个编辑页面中呈现。

员工/ edit.html.erb

<h1> 
    <%= @employee.full_name %> 
</h1> 
<div class="tabpanel"> 
    <div class="tab-content"> 
    <div class="tab-pane active" id="home" role="tabpanel"> 
     <%= render 'form' %> 
    </div> 
    </div> 
</div> 
<%= render 'layouts/sidebar' %> 

布局/ _sidebar.html.erb

<div class="sidebar"> 
    <ul class="nav"> 
    <li> 
     <%= link_to image_tag("Insurances.png")+"Insurances", employee_insurances_path(@employee) %> 
    </li> 
    <li> 
     <%= link_to image_tag("Education.png")+"Education", employee_educations_path(@employee) %> 
    </li> 
    </ul> 
</div> 

我的保险控制器

class InsurancesController < ApplicationController 
    before_action :set_insurance, only: [:show, :edit, :update, :destroy] 

    respond_to :html 

    def index 
    @employee = Employee.find(params[:employee_id]) 
    @insurances = @employee.insurances.all 
    respond_with(@insurances) 
    end 

    def show 
    @employee = Employee.find(params[:employee_id]) 
    respond_with(@insurance) 
    end 

    def new 
    @employee = Employee.find(params[:employee_id]) 
    @insurance = @employee.insurances.build 
    end 

    def edit 
     @employee = Employee.find(params[:employee_id]) 
    end 

    def create 
    @employee = Employee.find(params[:employee_id]) 
    @insurance = @employee.insurances.create(insurance_params) 
    redirect_to employee_path(@employee) 
    end 

    def update  
    @employee = Employee.find(params[:employee_id]) 
    @insurance.update(insurance_params) 
    redirect_to employee_path(@employee) 
    end 

    def destroy 
     @employee = Employee.find(params[:employee_id]) 
    @insurance.destroy 
    redirect_to employee_path(@employee) 
    end 

    private 
    def set_insurance 
     @insurance = Insurance.find(params[:id]) 
    end 

    def insurance_params 
     params.require(:insurance).permit(:name_of_dependent, :relationship,:policy_numbere) 
    end 
end 

任何想法如何点击边栏链接时呈现相同的页面?

回答

0

我的理解是,你有两个编辑表格,一个用于保险,一个用于教育。或者你可能有一个单一的表格。你需要做的是当用户点击边栏中的链接向控制器发送一个AJAX请求。创建表单的一部分。并在AJAX请求的成功附加页面上的任何地方的形式:

$('#container').append('<%= escape_javascript(render :partial => "form", :locals => {:employee => employee}) %>'); 

当地人是可选的。而#container是您现有页面的DOM中的section/div或任何元素,您可以将其重命名为任何内容。并且在你发送请求的动作控制器,你需要这样写:

这会为你行动的名称的文件搜索与js.eb.的延伸例如,您将其发送至edit操作,则视图文件夹中的文件名应为edit.js.erb。并在js.erb中写入追加部分的代码。

希望这会有所帮助。

相关问题