gpt4 book ai didi

ruby-on-rails - form_tag 中的验证

转载 作者:太空宇宙 更新时间:2023-11-03 16:13:21 27 4
gpt4 key购买 nike

在我的网上商店中,我想在将产品添加到购物车之前进行验证

我的 order_item 表格在产品展示中

我想强制用户选择尺寸,如果没有选择尺寸则显示错误消息

尺寸是产品的嵌套属性

我应该怎么写呢?

<%= form_tag clients_order_items_path, input_html: {id: "orderform"} do %>
<%= hidden_field_tag :product_id, @product.id %>
<%= hidden_field_tag :user_id, @token %>
<%= hidden_field_tag :quantity, 1 %>
<%= select_tag :size_id, options_from_collection_for_select(@product.sizes.where('quantity >=1'), :id, :size_name), prompt: "Your Size", class: 'form-control custom-select'%>
<%= submit_tag "Add to cart", class: "btn-main", id: "add_to_cart" %>

这是带有创建方法的 OrderItemsController:

 def create
@item = current_cart
@size = Size.find(params[:size_id])

if @size.quantity >= params[:quantity].to_i

current_cart.add_item(
product_id: params[:product_id],
quantity: params[:quantity],
size_id: params[:size_id],
)

redirect_to clients_cart_path
else
redirect_to clients_product_path(Product.find(params[:product_id]))

end
end

最佳答案

强制用户选择一种尺寸:

<%= select_tag :size_id, options_from_collection_for_select(@product.sizes.where('quantity >=1'), :id, :size_name), {include_blank: 'Your Size'}, required: true, class: 'form-control custom-select'%>

这将使 select 成为必需项,如果未选择大小,则会出现浏览器自定义消息。

如果你想自定义消息,并且在之前发出请求,考虑使用JS,我推荐https://jqueryvalidation.org/

OBS:这是一个很好的做法,不要在您的 View 上执行数据库查询,考虑制作 @product.sizes.where('quantity >=1') 在你的 Controller 中,如:

# Inside your controller
def show
...
@product_size_options = @product.sizes.where('quantity >=1')
...
end

和您的select_tag:

<%= select_tag :size_id, options_from_collection_for_select(@product_size_options, :id, :size_name), {include_blank: 'Your Size'}, required: true, class: 'form-control custom-select'%>

关于ruby-on-rails - form_tag 中的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54443261/

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