1
0
This repository has been archived on 2023-12-07. You can view files and clone it, but cannot push or open issues or pull requests.
body_tracking/app/controllers/measurements_controller.rb
2019-11-16 18:39:46 +01:00

69 lines
1.5 KiB
Ruby

class MeasurementsController < ApplicationController
before_action :find_project_by_project_id, only: [:index, :create]
before_action :find_measurement, only: [:destroy, :toggle]
before_action :authorize
def index
@measurement = @project.measurements.new
@measurement.readouts.new
prepare_measurements
@measurements << @measurement
end
def create
@measurement = @project.measurements.new(measurement_params)
if @measurement.save
flash[:notice] = 'Created newmeasurement'
redirect_to :back
else
prepare_measurements
@measurement.readouts.new if @measurement.readouts.empty?
render :index
end
end
def destroy
# FIXME: don't destroy if there are any readout values
if @measurement.destroy
flash[:notice] = 'Deleted measurement'
end
prepare_measurements
render :toggle
end
def toggle
@measurement.toggle_hidden!
prepare_measurements
end
private
def ingredient_params
params.require(:measurement).permit(
:name,
:source_id,
readouts_attributes:
[
:id,
:quantity_id,
:unit_id,
:_destroy
]
)
end
# :find_* methods are called before :authorize,
# @project is required for :authorize to succeed
def find_measurement
@measurement = Measurement.find(params[:id])
@project = @measurement.project
rescue ActiveRecord::RecordNotFound
render_404
end
def prepare_measurements
@measurements = @project.measurements.includes(:source)
end
end