4 votes

Définir l'attribut HTML id dans la boîte de sélection d'un formulaire Rails

Comment puis-je définir l'attribut id dans mes listes déroulantes ?

Voici la partie de mon formulaire en question :

<%= f.fields_for :items do |builder| %>
  <%= builder.label :description %><br />
  <%= builder.text_field :description %><br />
  <%= builder.label :material %><br />
  <%= builder.select :material, @letters.map { |l| [l.material, l.material] }, :id => "material_field" %><br />
  <%= builder.label :height %><br />
  <%= builder.select :height, @letters.map { |l| [l.height, l.height] }, :id => "height_field" %><br />
  <%= builder.label :thickness %><br />
  <%= builder.select :thickness, @letters.map { |l| [l.thickness, l.thickness] }, :id => "thickness_field" %><br />

  <%= builder.label :quantity %><br />
  <%= builder.text_field :quantity, :id => "quantity_field" %>
  <%= builder.link_to_remove "Remove this item" %>
<% end %>

La méthode :id => "quantity_field" fonctionne pour les champs de texte, mais pas pour les champs de sélection. En consultant la source HTML, j'obtiens un id de "estimate_items_attributes_0_material" pour la zone de texte "material".

C'est une étrange incohérence. Toute aide sera grandement appréciée.

30voto

Alexandre Butynski Points 6417

Il existe un paramètre entre les choix possibles et les options html. Vous devez donc faire ceci :

<%= builder.select :thickness, @letters.map { |l| [l.thickness, l.thickness] }, {}, :id => "thickness_field" %>

Vous pouvez trouver le document ici : http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-select

Et celui-ci peut aussi être utile : http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X