Ruby on rails 我想隐藏下拉列表中包含的包,而不接触我的模型

Ruby on rails 我想隐藏下拉列表中包含的包,而不接触我的模型,ruby-on-rails,Ruby On Rails,我有一个下拉列表,可以选择软件包。但目前,我想暂时隐藏一些软件包,而不涉及我的产品型号 请帮我解决这个问题。谢谢 <div class="col-sm-8 col-md-9"> <%= p.select :product_id, options_for_select( Listing::Product::PACKAGES.map { |k,v| [ v[:name], v[:rank] ] }, selected: p.object.product_id),

我有一个下拉列表,可以选择软件包。但目前,我想暂时隐藏一些软件包,而不涉及我的产品型号

请帮我解决这个问题。谢谢

<div class="col-sm-8 col-md-9">
          <%= p.select :product_id, options_for_select( Listing::Product::PACKAGES.map { |k,v| [ v[:name], v[:rank] ] }, selected: p.object.product_id), {include_blank: true}, class: "form-control" %>
          <small>
            <%= p.label I18n.t('admin.listings.edit.configuration.select_product') %>
          </small>


请在
包中删除不需要的项目。然后在过滤器之前从
编写一个单独的方法调用。在该方法中,根据您的情况将其他项目添加到包中。

要临时跳过包集合中的一些元素,可以执行以下操作:

# app/helpers/application_helper.rb
def ignored_package_keys
  %i[foo bar baz]
end

def packages_collection
  Listing::Product::PACKAGES.dup.
    delete_if { |k, _| ignored_package_keys.include? k }.
    map { |_, v| [ v[:name], v[:rank] ] }
end
在以下观点中:

<%= p.select :product_id, options_for_select(packages_collection, selected: p.object.product_id), { include_blank: true }, class: 'form-control' %>