Ваша форма не работает, так как атрибут действия /users
и ваш маршрут /users/:id
.
При условии, что вы передали пользователя в представление, вы можете сделать что-то вроде:
<form method="POST" action="/users/<%= @user.id %>">
Однако на самом деле вы не справляетесь с отправкой формы любым приличным способом. Принимая пользовательский ввод, вы всегда хотите проверить, является ли ввод действительным и что запись фактически сохранена. Если вы просто предполагаете, что все неуклюже, это будет взрываться очень быстро.
Если вы используете ActiveRecord / Mongoid, вы бы справились с этим так:
patch "/users/:id" do
@user = User.find(params[:id])
if @user.update(params.slice(:name, :email, :password))
redirect to "/users/#{@user.id}"
else
erb :edit # re-render the form
end
end