Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道-嵌套的路线和表格_Ruby On Rails_Ruby On Rails 4_Form For_Nested Routes - Fatal编程技术网

Ruby on rails 轨道-嵌套的路线和表格

Ruby on rails 轨道-嵌套的路线和表格,ruby-on-rails,ruby-on-rails-4,form-for,nested-routes,Ruby On Rails,Ruby On Rails 4,Form For,Nested Routes,我在routes.rb中有 resources :reckoners do resources: shift_requirements end 在我对新轮班要求的部分说明中,我有- <%= form_for ([@reckoner, ShiftRequirment.new]) do |f| %> 等等 我如何修改表单 expndtw-1.rb有许多:班次要求和班次要求.rb属于:计算者 班次要求控制器.rb- class ShiftRequirementsController

我在routes.rb中有

resources :reckoners do
  resources: shift_requirements
end
在我对新轮班要求的部分说明中,我有-

<%= form_for ([@reckoner, ShiftRequirment.new]) do |f| %>
等等

我如何修改表单

expndtw-1.rb
有许多:班次要求
和班次要求.rb属于:计算者

班次要求控制器.rb-

class ShiftRequirementsController < ApplicationController
  before_action :set_shift_requirement, only: [:show, :edit, :update, :destroy]

  # GET /shift_requirements
  # GET /shift_requirements.json
  def index
    @shift_requirements = ShiftRequirement.where(reckoner_id: params[:reckoner_id])
    @shift_requirement = ShiftRequirement.new
  end

  # GET /shift_requirements/1
  # GET /shift_requirements/1.json
  def show
  end

  # GET /shift_requirements/new
  def new
    @shift_requirement = ShiftRequirement.new
  end

  # GET /shift_requirements/1/edit
  def edit
  end

  def create
    @shift_requirement = ShiftRequirement.new(shift_requirement_params)
    zero_ise @shift_requirement
    totalise_FTEs @shift_requirement

    respond_to do |format|
      if @shift_requirement.save
        format.html { redirect_to shift_requirements_path(reckoner_id:@shift_requirement.reckoner_id), notice: 'Shift requirement was successfully created.' }
        format.json { render :show, status: :created, location: @shift_requirement }
      else
        format.html { render :new }
        format.json { render json: @shift_requirement.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    totalise_FTEs @shift_requirement
    respond_to do |format|  
      if @shift_requirement.update(shift_requirement_params)

        format.html { redirect_to shift_requirements_path(reckoner_id: @shift_requirement.reckoner_id), notice: 'Shift requirement was successfully updated.' }
        format.json { render :show, status: :ok, location: @shift_requirement }
      else
        format.html { render :edit }
        format.json { render json: @shift_requirement.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @shift_requirement.destroy
    respond_to do |format|
      format.html { redirect_to shift_requirements_url, notice: 'Shift requirement was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    def set_shift_requirement
      @shift_requirement = ShiftRequirement.find(params[:id])
    end

    def shift_requirement_params
      params.require(:shift_requirement).permit(:shift, :hours, :mon_count, :tue_count, :wed_count, :thu_count, :fri_count, :sat_count, :sun_count, :TotalFTE, :reckoner_id)
    end

    def zero_ise(shift)
      shift.mon_count ||= 0.0
      shift.tue_count ||= 0.0
      shift.wed_count ||= 0.0
      shift.thu_count ||= 0.0
      shift.fri_count ||= 0.0
      shift.sat_count ||= 0.0
      shift.sun_count ||= 0.0
    end

    def totalise_FTEs(shift)
      zero_ise shift
      shift.TotalFTE = (shift.mon_count + shift.tue_count + shift.wed_count + shift.thu_count + shift.fri_count + shift.sat_count + shift.sun_count)*shift.hours/Reckoner.find_by_id(shift.reckoner_id).weekly_hours
    end
end
类移位请求控制器
首先,您需要设置有新轮班要求的计算器。以下是如何在控制器中执行此操作(编辑了“新建”和“创建”操作。编辑了“索引”操作以跟上最佳实践:)。还添加了一个before action和set_计算器私有方法)

类移位请求控制器class ShiftRequirementsController < ApplicationController
  before_action :set_shift_requirement, only: [:show, :edit, :update, :destroy]

  # GET /shift_requirements
  # GET /shift_requirements.json
  def index
    @shift_requirements = ShiftRequirement.where(reckoner_id: params[:reckoner_id])
    @shift_requirement = ShiftRequirement.new
  end

  # GET /shift_requirements/1
  # GET /shift_requirements/1.json
  def show
  end

  # GET /shift_requirements/new
  def new
    @shift_requirement = ShiftRequirement.new
  end

  # GET /shift_requirements/1/edit
  def edit
  end

  def create
    @shift_requirement = ShiftRequirement.new(shift_requirement_params)
    zero_ise @shift_requirement
    totalise_FTEs @shift_requirement

    respond_to do |format|
      if @shift_requirement.save
        format.html { redirect_to shift_requirements_path(reckoner_id:@shift_requirement.reckoner_id), notice: 'Shift requirement was successfully created.' }
        format.json { render :show, status: :created, location: @shift_requirement }
      else
        format.html { render :new }
        format.json { render json: @shift_requirement.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    totalise_FTEs @shift_requirement
    respond_to do |format|  
      if @shift_requirement.update(shift_requirement_params)

        format.html { redirect_to shift_requirements_path(reckoner_id: @shift_requirement.reckoner_id), notice: 'Shift requirement was successfully updated.' }
        format.json { render :show, status: :ok, location: @shift_requirement }
      else
        format.html { render :edit }
        format.json { render json: @shift_requirement.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @shift_requirement.destroy
    respond_to do |format|
      format.html { redirect_to shift_requirements_url, notice: 'Shift requirement was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    def set_shift_requirement
      @shift_requirement = ShiftRequirement.find(params[:id])
    end

    def shift_requirement_params
      params.require(:shift_requirement).permit(:shift, :hours, :mon_count, :tue_count, :wed_count, :thu_count, :fri_count, :sat_count, :sun_count, :TotalFTE, :reckoner_id)
    end

    def zero_ise(shift)
      shift.mon_count ||= 0.0
      shift.tue_count ||= 0.0
      shift.wed_count ||= 0.0
      shift.thu_count ||= 0.0
      shift.fri_count ||= 0.0
      shift.sat_count ||= 0.0
      shift.sun_count ||= 0.0
    end

    def totalise_FTEs(shift)
      zero_ise shift
      shift.TotalFTE = (shift.mon_count + shift.tue_count + shift.wed_count + shift.thu_count + shift.fri_count + shift.sat_count + shift.sun_count)*shift.hours/Reckoner.find_by_id(shift.reckoner_id).weekly_hours
    end
end
class ShiftRequirementsController < ApplicationController
  before_action :set_shift_requirement, only: [:show, :edit, :update, :destroy]
  before_action :set_reckoner

  # GET /shift_requirements
  # GET /shift_requirements.json
  def index
    @shift_requirements = @reckoner.shift_requirements.all
  end

  # GET /shift_requirements/1
  # GET /shift_requirements/1.json
  def show
  end

  # GET /shift_requirements/new
  def new
    @shift_requirement = @reckoner.shift_requirements.new
  end

  # GET /shift_requirements/1/edit
  def edit
  end

  def create
    @shift_requirement = @reckoner.shift_requirements.new(shift_requirement_params)
    zero_ise @shift_requirement
    totalise_FTEs @shift_requirement

    respond_to do |format|
      if @shift_requirement.save
        format.html { redirect_to shift_requirements_path(reckoner_id:@shift_requirement.reckoner_id), notice: 'Shift requirement was successfully created.' }
        format.json { render :show, status: :created, location: @shift_requirement }
      else
        format.html { render :new }
        format.json { render json: @shift_requirement.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    totalise_FTEs @shift_requirement
    respond_to do |format|
      if @shift_requirement.update(shift_requirement_params)

        format.html { redirect_to shift_requirements_path(reckoner_id: @shift_requirement.reckoner_id), notice: 'Shift requirement was successfully updated.' }
        format.json { render :show, status: :ok, location: @shift_requirement }
      else
        format.html { render :edit }
        format.json { render json: @shift_requirement.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @shift_requirement.destroy
    respond_to do |format|
      format.html { redirect_to shift_requirements_url, notice: 'Shift requirement was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    def set_shift_requirement
      @shift_requirement = ShiftRequirement.find(params[:id])
    end

    def set_reckoner
      @reckoner = Reckoner.find(params[:reckoner_id])
    end

    def shift_requirement_params
      params.require(:shift_requirement).permit(:shift, :hours, :mon_count, :tue_count, :wed_count, :thu_count, :fri_count, :sat_count, :sun_count, :TotalFTE, :reckoner_id)
    end

    def zero_ise(shift)
      shift.mon_count ||= 0.0
      shift.tue_count ||= 0.0
      shift.wed_count ||= 0.0
      shift.thu_count ||= 0.0
      shift.fri_count ||= 0.0
      shift.sat_count ||= 0.0
      shift.sun_count ||= 0.0
    end

    def totalise_FTEs(shift)
      zero_ise shift
      shift.TotalFTE = (shift.mon_count + shift.tue_count + shift.wed_count + shift.thu_count + shift.fri_count + shift.sat_count + shift.sun_count)*shift.hours/Reckoner.find_by_id(shift.reckoner_id).weekly_hours
    end
end
<%= form_for ([@reckoner, @shift_requirement]) do |f| %>