Hoe stel ik de HTML-opties voor collection_select in Rails in?

Ik kan de syntaxis niet vinden om een ​​klasse toe te voegen aan een geselecteerde tag die is gegenereerd door Rails collection_select. Wat hulp?


Antwoord 1, autoriteit 100%

Veel Rails-helpers gebruiken meerdere hash-argumenten. De eerste zijn meestal de opties om de helper zelf te besturen, en de tweede zijn de html_options waar je aangepaste id’s, klassen enz. specificeert.

De methodedefinitie ziet er als volgt uit:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

Je ziet het veelvoud ‘= {}’ in de lijst met parameters. Om dit te gebruiken, moet de eerste set opties die u zou specificeren tussen accolades staan:

collection_select(:user, :title, UserTitle.all, :id, :name, {:prompt=>true}, {:class=>'my-custom-class'})

Als je geen opties hebt om op te geven naast de html-klasse, plaats dan gewoon een lege hash-placeholder:

collection_select(:user, :title, UserTitle.all, :id, :name, {}, {:class=>'my-custom-class'})

Aanvullende API-documentatie is beschikbaar op:
http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select


Antwoord 2, autoriteit 5%

= f.collection_select :category_id, Category.order(:name), :id, :name, {}, {class: "store-select"}

Antwoord 3

Voor het geval ik met hetzelfde probleem worstelde, deel ik mijn resultaat, ik probeerde gewoon {},{}in te voeren, dus ik moest explicieter zijn als volgt: options = {}, html_options = {}, omdat het bij mij niet werkte.

<div class="field">
   <%= form.label :country_id %>
   <%= form.collection_select :country_id, @countries,:id, :name, options = {:prompt => 'Select a Country...'},
        html_options = {class: "dropdown"}%>
 </div>

Met vriendelijke groet!

Other episodes