Я использую Rails и создаю страницу, которая создает новых «людей» (people / new).
Используя javascript, я сканирую страницу с пользовательскими данными и в результате получаю объект javascript, который выглядит следующим образом:
obj = { name: "John", age: 30, city: "New York" };
Я хочу добавить прослушиватель событий (нажатие клавиши q), который сохраняет этот хэш в базе данных, которая выглядит следующим образом:
create_table "people", force: :cascade do |t|
t.string "name"
t.integer "age"
t.string "city"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Несмотря на то, что у меня есть входные данные, которые я сканирую, НЕТ формы.
Я знаю, как JSON.stringify, и я знаю, как работают eventListeners, но я не уверен, как можно отправить этот строковый объект из javascript в код ruby, который сохраняет его в базе данных.
Вот Javascript, который я сделал до сих пор:
приложение / активы / JavaScript / testing.js
addEventListener('keyup', event => {
if (event.key === "q") {
var array = []
var inputs = document.querySelectorAll("input")
inputs.forEach ((input) => {
array.push(input.value)
})
var name = array[0]
var age = array[1]
var city = array[2]
var hash = {}
hash["name"]= name
hash["age"]= age
hash["city"]= city
var stringified = JSON.stringify(hash)
}
} )
А вот как выглядит мой контроллер:
class PeopleController < ApplicationController
def index
@people = Person.all
end
def new
@person = Person.new
end
def create
Person.create(person_params)
end
private
def person_params
params.require(:person).permit(:name, :age, :city)
end
end
Я ожидаю, что при нажатии клавиши «q» все, что присутствует во входах, сохраняется в базе данных