У меня есть маршрут с именем "/admin"
, который используется для добавления и перечисления продуктов:
resources :products, controller: "admin"
В администраторе контроллера у меня есть функция create
:
def create
@product = Product.new product_values
respond_to do |format|
if @product.save
format.html { redirect_to :root }
else
format.js { render 'admin/error' }
end
end
end
Когда я пытался заставить его отрендериться до формата. js, он сказал:
ActionController::UnknownFormat
on `respond_to do |format|`
Я думал, что создал admin/create.js.haml
:
console.log("got it")
, но это не так работа.
Почему я хотел, чтобы ответ был "format. js"? Поскольку я хочу добавить сообщение об ошибке в форму и не хочу обновить sh страницу, поэтому я отвечаю на JavaScript до append
в некотором div с сообщением об ошибке.
Это admin/add_product.html.haml
:
.p-5
.container.column.justify-content-center
%div.d-flex.justify-content-center.p-4#this-error
%div
%h3
Add Product
%div
= form_for (@product || Product.new) do |f|
.form-group.row
= f.label :name, class: 'col-md-2 col-form-label'
%br/
.col-sm-8
= f.text_field :name, class: 'form-control'
.form-group.row
= f.label :stock, class: 'col-md-2 col-form-label'
%br/
.col-sm-2
= f.number_field :stock, class: 'form-control'
.my-4
= f.label :price, class: 'ml-5 col-md-1 col-form-label'
%br/
.col-sm-2
= f.number_field :price, class: 'form-control'
.form-group.row
= f.label :desc, class: 'col-md-2 col-form-label'
%br/
.col-sm-8
= f.text_area :desc, class: 'form-control'
.d-flex.justify-content-center
= f.submit "Add", class: 'btn btn-primary col-sm-8 p-2'
Как использовать для этого формат. js в Haml?