Я относительно новичок в этом, так что терпите меня, если я не соблюдаю все правила или не размещаю должным образом. Короче говоря, у меня есть приложение rails, получающее данные через контроллер API. Я могу написать с почтальоном, и все работает отлично. Однако я обнаружил необходимость вручную вводить некоторые измерения и добавлять данные в столбцы существующих измерений.
Можно ли отправить данные формы в ту же таблицу, что и контроллер api? Я мог бы создать отдельный контроллер ручного ввода, но кажется более сложным просматривать измерения с двух контроллеров, так как моя цель - отобразить самые последние измерения. Спасибо.
Правка-- Я постараюсь объяснить лучше. Я добавил свою схему базы данных. У меня есть несколько датчиков ввода данных в API для отслеживания уровней в бункерах. Однако не все ячейки будут иметь датчики, и есть вероятность, что датчик выйдет из строя, и мне потребуется ввести измерения. Я могу сделать это с почтальоном, но хотел бы иметь возможность настроить форму, которая позволит мне вводить параметры в таблицу измерений, аналогично тому, как я делаю это с моим контроллером 'bin'. Кроме того, я работаю с Rails и веб-программированием только 2 месяца. У меня очень мало опыта, но я многому научился. Спасибо.
ActiveRecord::Schema.define(version: 2019_03_06_131737) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "bins", force: :cascade do |t|
t.string "name"
t.decimal "diameter"
t.decimal "total_height"
t.decimal "inside_height_diff"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.decimal "response_angle"
t.decimal "hopper_height"
t.integer "inside_offset"
t.integer "outside_offset"
t.decimal "ring_height"
end
create_table "measurements", force: :cascade do |t|
t.integer "outside"
t.integer "inside"
t.bigint "bin_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "comment"
t.boolean "outside_fill"
t.boolean "inside_fill"
t.index ["bin_id"], name: "index_measurements_on_bin_id"
end
create_table "shipments", force: :cascade do |t|
t.integer "ticket"
t.date "ship_date"
t.time "ship_time"
t.string "commodity"
t.string "owner"
t.string "carrier"
t.decimal "gross"
t.decimal "tare"
t.decimal "moisure"
t.decimal "dock"
t.decimal "test_weight"
t.decimal "vom"
t.string "comment"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_foreign_key "measurements", "bins"
end
class Api::MeasurementsController < ApplicationController
skip_forgery_protection
def index
measurements = Measurement.all
render json: measurements
end
def create
measurement = Measurement.create(
outside: params[:outside],
inside: params[:inside],
bin_id: params[:bin_id],
outside_fill: params[:outside_fill],
inside_fill: params[:inside_fill],
comment: params[:comment]
)
render json: measurement
end
def delete
measurement = Measurement.find(params[:id])
measurement.destroy
end
def update
measurement = Measurement.find(params[:id])
measurement.outside = params[:outside]
measurement.inside = params[:inside]
measurement.bin_id = params[:bin_id]
measurement.outside_fill = params [:outside_fill]
measurement.inside_fill = params [:inside_fill]
measurement.comment = params [:comment]
measurement.save!
render json: measurement
end
end