gpt4 book ai didi

ruby-on-rails - 变体选项值的 Spree 下拉框

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

我正在学习 Spree 3.0 并且我有一个销售短裤的测试店。

短裤有多种选择类型:尺码、颜色、长度

我想将前端显示变体选项的方式从单选框更改为下拉框。

目前,Spree 将选项类型显示为单选按钮:

Current Spree setup

我想将其更改为对每个选项类型使用下拉菜单,如下所示:

What I want Spree to do

我尝试了以下方法:

<%= select_tag "variant_id", options_for_select(@product.variants_and_option_values(current_currency).collect{ |v| ["#{variant_options(v)}  #{variant_price(v)}", v.id] })%>

但它只是显示每个标签中所有选项类型的值:

Dropdown with all the option types 1

Dropdown with all the option types 2

我想知道将选项值拆分为单个下拉菜单的最佳方法?

我非常感谢任何帮助,谢谢。

最佳答案

这并不像看起来那么容易,因为您将使用 Spree::OptionValue记录而不是变体,并且在某些时候您会想要转换回变体以将其添加到您的购物车。组合可能无法实现和/或缺货,因此使用 option_values 非常不切实际。

但尽管如此,您想知道我如何设置以下内容:

@options = Spree::OptionValue.joins(:option_value_variants).where(spree_option_value_variants: { variant_id: @product.variant_ids }).group_by(&:option_type)

这将为您提供一个散列,散列的键为 option_types(在您的情况下为大小、颜色、长度),值为 option_values 的数组。

你可以很容易地把它变成这样的 radio :
<% @options.each do |option_type, option_values| %>
<%= content_tag :h2, option_type.presentation %>
<% option_values.each do |option_value| %>
<%= radio_button_tag option_type.name, option_value.id %>
<%= label_tag option_value.presentation %>
<% end %>
<% end %>

或者对于下拉菜单:
<% @options.each do |option_type, option_values| %>
<%= content_tag :h2, option_type.presentation %>
<%= collection_select :variants, option_type.name, option_values, :id, :presentation %>
<% end %>

在你的 Controller 中,你会想要找到一个符合这 3 个条件的变体,检查它是否是 in_stock , backorderabletrack_inventory?false并回复错误或更新购物车:)

我希望这有帮助

关于ruby-on-rails - 变体选项值的 Spree 下拉框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34898575/

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