Я создаю макет «Приложение для заказа Chipotle» в рельсах, и у меня возникают трудности с отправкой различных видов мяса с помощью флажков. Я попытался использовать 'check_box' и 'check_box_tag', с несколькими конфигурациями в моей модели, но безрезультатно.Использование флажков для отправки значений массиву
Вот моя модель:
class Order
include Mongoid::Document
field :type, type: String
field :meat, type: Array
field :cheese, type: Mongoid::Boolean
belongs_to :user
end
Вот создать действие в мой контроллер:
def create
@order = Order.new(order_params)
if @order.save
flash[:notice] = "Successfully submitted order!"
redirect_to action: 'index'
else
render action: 'new'
end
end
private
def order_params
params.require(:order).permit(:type, :meat, :cheese)
end
А вот форма, на мой взгляд:
<%= form_for @order do |order| %>
<div>
<%= order.label :type %>:
<%= order.select :type, options_for_select(['Burrito', 'Taco', 'Quesadilla', 'Salad Bowl']) %>
</div>
<div>
<%= order.label :meat %>
<%= order.check_box :meat, {}, value='chicken'%>
<%= order.check_box :meat, {}, value='steak'%>
<%= order.check_box :meat, {}, value='tofu'%>
</div>
<div>
<%= order.label :cheese %>:
<%= order.check_box :cheese %>Yes
</div>
<div><%= order.submit %></div>
<% end %>
Все, кроме флажки для «мяса» работают, и если я изменю свой тип поля в модели для «мяса» от Array до String, я могу представить va lue из последнего флажка ... но если я попытаюсь передать массив из флажков, я получу ошибку «Проблема: значение типа String не может быть записано в поле типа Array».
Все остальные вопросы, которые я видел в этой теме, рекомендуют делать что-то в соответствии с тегами 'tag_ids = params [: tag_ids]' в контроллере, но я не уверен, как это реализовать.
Заранее благодарим за помощь.
Возможно, это может привести вас к правильному пути: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag#64-Pass-id-collections-with-check-box-tags – Benj
Спасибо @BenjaminSinclaire , У меня был пробел в моем понимании, но ваш пост был, безусловно, полезен. –