Dies ist keine Hausaufgabe. Ich mache das, um meine RoR-Fähigkeiten zu verbessern.Filter Dropdown-Liste Option für Grouped_collection_select
Ich habe beide Manufacturer
und Model
Einheit. Ich habe alle Beziehung Setup richtig und Benutzer muss Manufacturer
wählen, bevor Sie Model
auswählen. Ich habe meiner Anwendung, die ich erstellt habe, weitere Funktionen hinzugefügt. Nun möchte ich die name
aus der Dropdown-Liste Model
herausfiltern, wobei die name
das Wort (Other)
enthält.
Beispiel für name
Attribut in Model
Einheit: F20
, F10 (Other)
, E90
.
Ich möchte den Namen des Modells herausfiltern, die (Other)
enthalten. SQL-Anweisung wäre Model.where.not("name LIKE ?", "%(Other)%")
. Nachdem manufacturer
ausgewählt wurde, werden F20
und E90
angezeigt. F10 (Other)
wird ausgeschlossen, da der Name das Wort (Other)
enthält.
Dies ist, was ich für die Dropdown-Liste Formular habe.
<%= bootstrap_form_tag url: '/quotation/tints/generate' do |f| %>
<div class="field">
<%= f.collection_select :manufacturer_id, Manufacturer.order(:name), :id, :name, {:prompt => "Select Manufacturer"} %>
</div>
<div class="field">
<%= f.grouped_collection_select :model_id, Manufacturer.order(:name), :models, :name, :id, :name, {:prompt => "Select Model"} %>
</div>
//Some code here that are not related
<% end %>
Was ich versucht habe: In meinem tints_controller
, dies und ich habe meine Form aktualisiert, um mit zu arbeiten, was ich geändert haben.
def quotation
@listmanufacturer = Manufacturer.order(:name)
@listmodel = Model.where.not("name LIKE ?", "%(Other)%")
render 'quotation'
end
Meine Form
<%= bootstrap_form_tag url: '/quotation/tints/generate' do |f| %>
<div class="field">
<%= f.collection_select :manufacturer_id, @listmanufacturer, :id, :name, {:prompt => "Select Manufacturer"} %>
</div>
<div class="field">
<%= f.grouped_collection_select :model_id, @listmanufacturer, @listmodel, :name, :id, :name, {:prompt => "Select Model"} %>
</div>
//Some code here that are not related
<% end %>
Allerdings erhielt ich einen Fehler wie TypeError: nil is not a symbol
. Ich kann meine models_controller
nicht ändern, da die Dropdownliste einige Male in anderer Ansicht verwendet wird. Einige Ansichten benötigen die Modelle mit dem Wort (Other)
und einige werden nicht benötigt.
@listmodel
ist der Teil, der alles bricht. Indem ich :models
durch @listmodel
ersetze, hüpfe ich, um den Modellnamen herauszufiltern, der (Other)
enthält.
Jede Hilfe wird sehr geschätzt!
Hinweis: Bis zu diesem Punkt funktioniert meine Anwendung ordnungsgemäß. Alle Beziehungen sind korrekt in model
eingerichtet und routes
sind konfiguriert.
UPDATE mehr Protokolle
ActionView::Template::Error (#<ActiveRecord::Relation [#<Model id: 1, name: "Kancil Old", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 2, name: "Kancil 04", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 3, name: "Kembara", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 4, name: "Kenari", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 5, name: "Kelisa", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 6, name: "Myvi 05", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 7, name: "Rusa", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 8, name: "Viva", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 9, name: "Alza", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, #<Model id: 10, name: "Myvi Ii", manufacturer_id: 1, created_at: "2016-08-14 16:12:24", updated_at: "2016-08-14 16:12:24">, ...]> is not a symbol nor a string):
6: </div>
7:
8: <div class="field">
9: <%= f.grouped_collection_select :model_id, @listmanufacturer, @listmodel, :name, :id, :name, {:prompt => "Select Model"} %>
10: </div>
11:
12: <div class="field">
app/views/tints/quotation.html.erb:9:in `block in _app_views_tints_quotation_html_erb__1724914643_132263140'
app/views/tints/quotation.html.erb:3:in `_app_views_tints_quotation_html_erb__1724914643_132263140'
app/controllers/tints_controller.rb:47:in `quotation'
Rendering C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout
Rendering C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
Rendered C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (9.0ms)
Rendering C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
Rendered C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (5.0ms)
Rendering C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
Rendered C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.0ms)
Rendered C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (539.0ms)
DEPRECATION WARNING: #original_exception is deprecated. Use #cause instead. (called from status_code_with_paginate at C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/will_paginate-3.1.0/lib/will_paginate/railtie.rb:49)
In welcher Zeile wird der Fehler angezeigt? Bitte posten Sie die Stack-Trace mit dem Fehler – p4sh4
Meine Vermutung: Klammern sind möglicherweise ein Sonderzeichen, das zu entkommen ist ??? –
@TarynEast Ich glaube nicht. Ich benutze 'Model.where.not (" name LIKE? ","% (Other)% ")' in der 'index.html.erb' und funktioniert gut ohne Escape-Zeichen. –