@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 %>
|
Это поможет пользователям увидеть ошибки и исправить их при создании объекта модели.