Я пытаюсь добавить объект в свою базу данных, используя модальный (из материализации). Когда пользователь нажимает кнопку «новый», будет отображаться модальное окно, и после заполнения формы будет создан объект.
Основной вид выглядит так
.
.
.
<%= link_to "add", new_item_path, remote: true %>
.
.
.
<div id="addItemModal" class="modal">
<div class="modal-content">
<h4 class="col s12">Add Item</h4>
<div class="row">
<%= form_with(model: Item.new, class: "col s12") do |f| %>
<div class="row">
<div class="input-field col s6">
<%= f.label :name %>
<%= f.text_field :name, class: "validate" %>
</div>
</div>
<% end %>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-
green btn-flat">Cancel</a>
<%= button_to "Save",
items_path,
class: "modal-action modal-close waves-effect waves-green btn
light-blue darken-2 text-white", remote: true %>
</div>
</div>
Когда пользователь заполняет модальную форму и нажимает кнопку «Отправить», в элементе items_controller вызывается действие создания.
def create
@item = Item.new(params[:item])
respond_to do |format|
if @item.save
format.js
else
format.js
end
end
end
Я взглянул на хэш параметров после отправки, и оказалось, что значения, введенные в форму, не отправляются в действие создания. Я проверил поля ввода, и они, кажется, связаны с объектом
<input class="validate" type="text" name="item[name]">
Редактировать:
Ответ сервера
Started POST "/items" for 127.0.0.1 at 2017-06-26 17:59:23 -0500
Processing by ItemsController#create as JS
Parameters {"authenticity_token"=>"B1YVBtBy0NGe0jnhdeJquj19g8aJa8WfNwA/k8vekOySACiJ20wnR5XAI2rw7mIIUSnp5K7ZqmLxYdddGqimvw=="}
(0.1ms) begin transaction
(0.1ms) rollback transaction
Redirected to http://localhost:3000/?message=Error+Saving
Completed 200 OK in 3ms (ActiveRecord: 0.1ms)