Rails Year制作模型动态菜单

时间:2013-11-11 13:55:04

标签: ruby-on-rails ruby

调用所有Rails超级英雄!我正在用这个绞尽脑汁,无法在网上找到任何解决方案......我想建立年份/品牌/型号下拉菜单,从30,000多辆不同车型的桌子中选择一辆车。该表名为 car_variants Here's a link to a similar thing on kbb.org

首先选择,然后将制作下拉列表与该年度可用的下拉列表一起填充。这反过来填充模型下拉列表。所有这些过滤都克服了在一次无法使用的下拉列表中使用30,000个car_variant的可怕问题。

不幸的是,我没有足够的声誉发布我的实体图,但基本上......

  • car_make有很多car_models
  • car_model有很多car_variants
  • car_year有很多car_variants

SIDE NOTE 由于car_variants表将通过导入excel电子表格填充,我决定直接将car_year加入car_variants,而不是说car_year有很多car_models。这可能会也可能不会影响下面的挑战。

car_variants 模型(自1984年以来几乎所有汽车的表格)存储 car_year_id car_model_id 。 (car_make通过car_model显而易见)

现在......随之而来的是用户。他们想从car_variants表中选择他们的汽车然后添加他们的汽车的昵称 license_plate 。用户可能拥有许多汽车,因此car_variant_id不能存储在用户表中。相反,我们有一个汽车表,其中包含用户汽车。

  • car_variant有很多车(想想一辆车就像car_variant的一个例子)
  • 用户有很多车

Ryan Bates对动态选择菜单做了很好的screencast。在他的例子(国家和国家)中,他使用了groups_collection_select和一些javascript。对于这一挑战来说,这似乎也正朝着正确的方向前进,但这更复杂,因为有更多的has_many关系比 grouped_collection_select 似乎能够处理。

我已成功为汽车表格编制了3年下降,制造和型号......

    <%= simple_form_for(@car) do |f| %>
      <%= f.error_notification %>
      <div class="form-inputs"> 

      <!-- select year to filter make dropdown -->
      <p>Year</p>
        <%= select_tag :car_year, options_for_select(CarYear.all.collect {|e| ["#{e.year}", e.id] }), :include_blank => true %>

      <!-- Select make to filter model dropdown -->
      <p>Make</p>
      <%= select_tag :car_make, options_for_select(CarMake.all.collect {|e| ["#{e.name}", e.id] }), :include_blank => true %>       

      <!-- Select model -->
      <p>Model (grouped collection select)</p>
      <%= f.grouped_collection_select :car_variant_id, CarMake.order(:name), :car_models, :name, :id, :name, include_blank: true %>        
      <%= f.input :nickname, :hint => "If you've given your car a nickname enter it here, otherwise just leave it blank." %>
        <%= f.input :plate %>
        <%= f.hidden_field :user_id, :value => current_user.id %>
      </div>

       <div class="form-actions">
        <%= f.button :submit, "Add Car" %>
      </div>
    <% end %>

...现在如何将它们全部绑定在一起,以便它们相互过滤,然后返回car_variant_id以存储在car_form中。

经过几个晚上的惨淡夜晚,我没有想法。

0 个答案:

没有答案