gpt4 book ai didi

ruby-on-rails - 使用复选框将值提交到数组

转载 作者:行者123 更新时间:2023-12-04 07:38:38 25 4
gpt4 key购买 nike

我在 Rails 中创建了一个模拟的“Chipotle order app”,但我很难通过复选框提交不同类型的肉。我试过使用“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

这是我的 Controller 中的创建操作:

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 %>

除了“肉”复选框之外的所有内容都有效,如果我将“肉”模型中的字段类型从数组更改为字符串,我可以提交最后一个复选框的值...但是如果我尝试提交复选框中的数组,我收到错误“问题:字符串类型的值无法写入数组类型的字段”。

我看到的关于这个主题的所有其他问题都建议在 Controller 中按照“tag_ids = params[:tag_ids]”的方式做一些事情,但我不确定如何实现它。

在此先感谢您的帮助。

最佳答案

最终允许一切正常运行的代码如下。最终,我认为关键区别在于 Controller 中的“肉:[]”。

型号:

class Order
include Mongoid::Document
field :type, type: String
field :meat, type: Array, default: []
field :cheese, type: Mongoid::Boolean

belongs_to :user
end

Controller :

def create
@order = Order.new(order_params)

if @order.save
redirect_to action: 'index'
flash[:notice] = "Successfully submitted order!"
else
render action: 'new'
end
end

private
def order_params
params.require(:order).permit(:type, :cheese, meat: [])
end

并查看:

<%= form_for @order do |f| %>
<div>
<%= f.label :type %>:
<%= f.select :type, ['Burrito', 'Taco', 'Quesadilla', 'Salad Bowl'] %>
</div>

<div>
<%= f.label :meat %>
<%= check_box_tag 'order[meat][]', 'chicken', @order.meat.include?('chicken') %>
<%= check_box_tag 'order[meat][]', 'steak', @order.meat.include?('steak') %>
<%= check_box_tag 'order[meat][]', 'tofu', @order.meat.include?('tofu') %>
</div>

<div>
<%= f.label :cheese %>:
<%= f.check_box :cheese %>Yes
</div>

<div><%= f.submit %></div>

<% end %>

希望这对某人有帮助。

关于ruby-on-rails - 使用复选框将值提交到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21568957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com