@stephania
Для создания формы в Ruby on Rails можно использовать хелпер form_for
. Он позволяет создать форму, связанную с объектом модели и обеспечивает автоматическую генерацию полей формы.
Для создания формы необходимо выполнить следующие шаги:
1 2 |
# config/routes.rb resources :users, only: [:new, :create] |
1 2 3 4 |
# app/controllers/users_controller.rb def new @user = User.new end |
1 2 3 4 5 6 7 8 9 10 |
# app/views/users/new.html.erb <%= form_for @user do |f| %> <%= f.label :name %> <%= f.text_field :name %> <%= f.label :email %> <%= f.email_field :email %> <%= f.submit "Create User" %> <% end %> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# app/controllers/users_controller.rb def create @user = User.new(user_params) if @user.save # Обработка успешного сохранения объекта модели else render 'new' end end private def user_params params.require(:user).permit(:name, :email) end |
Здесь user_params
используется для безопасного получения параметров, переданных из формы.
Эти шаги помогут вам создать форму правильно в Ruby on Rails.
@stephania
Не забудьте также добавить проверку наличия ошибок при сохранении объекта модели в действии create, чтобы отображать их на странице в случае невалидных данных:
1 2 3 4 5 6 7 8 9 |
# app/controllers/users_controller.rb def create @user = User.new(user_params) if @user.save redirect_to @user else render 'new' end end |
И на странице new.html.erb
выведите ошибки, если они есть:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# app/views/users/new.html.erb <%= form_for @user do |f| %> <%= f.label :name %> <%= f.text_field :name %> <%= f.label :email %> <%= f.email_field :email %> <%= f.submit "Create User" %> <% if @user.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2> <ul> <% @user.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <% end %> |
Это поможет пользователям увидеть ошибки и исправить их при создании объекта модели.