Spree 变体选项值的下拉框

2024-03-20

我正在学习 Spree 3.0,并且我建立了一个销售短裤的测试商店。

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

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

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

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

我尝试过以下方法:

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

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

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

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


这并不像看起来那么容易,因为您将使用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 数组。

您可以轻松地将其形成这样的收音机:

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

在你的控制器中,你会想要找到一个符合这 3 个标准的变体,检查它是否是in_stock, backorderable or track_inventory? is false并回复错误或更新购物车:)

我希望这有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spree 变体选项值的下拉框 的相关文章

  • has_many 关系的动态 class_name

    我正在尝试与动态 class name 属性建立 has many 关系 class Category lt ActiveRecord Base has many ads class name gt lambda return self i
  • Bundler 似乎无法通过 Rbenv 找到正确的 Ruby

    多年来我一直使用 RVM 作为 Ruby 版本管理器 但由于其简单性 我想改用 rbenv 但是我在部署时发现了一些奇怪的问题 这似乎是错误的地方 env RBENV ROOT home deploy rbenv PATH home dep
  • 您推荐使用哪些工具来分析 Rails 应用程序? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找 Rails 的分析工具 我目前正在玩和测试 ruby prof 和 Railsbench 但我对使其工作所需的大量调整和修改
  • 如何让 Rails 资产管道生成源地图?

    我想让 Rails 与编译后的 CoffeeScript 缩小的 JS 一起生成源映射 以便更好地记录错误 不过 网上似乎还没有关于如何执行此操作的全面文档 有人这样做过吗 我使用 Rails 3 2 和 Heroku Rails 支持缩小
  • 为铁路中的自引用关联建立工厂

    我有一个典型的要求 我必须按如下方式处理用户对象 user referrer and user referrers 基本上 用户可以推荐多个人 并且一个人应该由一位特定用户推荐 所以我按如下方式建立关联 他们工作得很好 class User
  • Facebook 注册后重定向至页面

    我正在尝试在成功 Facebook 注册 未登录 后重定向用户 我想重定向到 getstarted welcome用户注册后首次 我的omniauth回调是 def facebook You need to implement the me
  • Rails 3 UJS 干客户端 + 服务器端表单验证

    使用 jQuery 进行表单验证就像向字段添加类名一样简单 使用 Rails 进行表单验证就像将条件放入控制器 和 或模型 中一样简单 我认为应该有一种方法可以编写一次验证并将它们应用到客户端和服务器端 我一直热衷于编写自己的 javasc
  • 如何使用 LDAP 进行 Ruby on Rails 身份验证? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个网络应用程序 并且我有一个使用的身份验证方法bcrypt gem它工作正常 但我想将身份验
  • 在模型中的方法中捕获异常时重定向

    我正在使用 Authlogic connect 连接各种服务提供商 user rb中有一个方法 def complete oauth transaction token token class new oauth token and sec
  • Rails 模型中的多个 counter_cache

    我正在学习 Rails 遇到了一个小问题 我正在编写带有任务列表的非常简单的应用程序 因此模型看起来像这样 class List lt ActiveRecord Base has many tasks has many undone tas
  • 使用 shoulda 重构 Rails 模型上的 rspec 测试

    了解后应该匹配器 https github com thoughtbot shoulda matchers通过回答关于属性可访问性测试的另一个 StackOverflow 问题 https stackoverflow com a 11849
  • RSpec 抛出分段错误

    有时我的测试套件会无缘无故地抛出分段错误 这是输出 Users Test rvm gems ruby 1 9 3 p392 gems activerecord 3 2 9 lib active record relation query m
  • Rails 模型测试 - 模拟与工厂

    Rails 测试模拟对象与使用工厂对象的最佳实践是什么 应该嘲笑only当模型可能转到外部源时使用 或者 您是否仅在测试实际模型并使用模拟来处理其他所有内容时才使用工厂 例如 如果我们有一个包含客户和订单的销售系统 那么当我们测试客户模型时
  • 为什么 .each 在我的 Rails 视图中完成后会重复数组? [复制]

    这个问题在这里已经有答案了 在我的 Rails 视图页面中 我有以下循环 它应该循环遍历我的 tag list 数组并打印每个标签 由于某种原因 它在打印每个单独的标签后会重复该数组 例如 这个数组有两个元素 ruby python 每个方
  • 调整回形针大小以适合矩形框

    我有一个矩形图像 例如 30x800 像素 如何用回形针缩放它以保留 100x100 像素图像的纵横比 并用边框填充空白区域 一个例子 http www imagemagick org Usage thumbnails pad extent
  • application.css 未作为资产提供

    编辑4 5和6 8小时后 欢迎任何更多的想法 也许这个错误已经被知道并解决了 但是当你在 app assets stylesheets 的 css erb 文件中有这个时 我得到了我在编辑 2 3 中描述的行为 li background
  • 如何按值降序对哈希进行排序并在 ruby​​ 中输出哈希?

    output sort by k v v reverse 和钥匙 h a gt 1 c gt 3 b gt 2 d gt 4 gt a gt 1 c gt 3 b gt 2 d gt 4 Hash h sort 现在我有这两个 但我试图按值
  • Active Admin Rails 4 内联表单

    我正在 Rails 4 ActiveAdmin 和 Money Rails 上使用 有没有办法在一行文本中有两个或多个输入 para Please enter the amount f input amount due currency l
  • 使用 RSpec 请求规范授权请求时,access_token 无效

    我正在尝试测试CredentialsController 使用 RSpec 请求规范在生产中运行良好 Code 控制器 class CredentialsController lt ApplicationController before
  • 如何将openId与rails 3中的设备集成

    我是 Rails 新手 刚刚完成了一个简单的设计设置 我正在寻求实现一些仍然使用核心设计功能集但允许通过 openid 提供商登录而不是 使用电子邮件或用户名注册 的东西 我如何开始使用最新的设计宝石和rails 3 看看devise op

随机推荐