Question

J'ai la boîte de sélection suivante qui a été créée en utilisant emboîtées:

<select name="product[shop_attributes][id]" id="product_shop_attributes_id">
  <option value="23">KMART</option>
  <option value="24">Super Shop</option>
  <option selected="selected" value="22">TARGET</option>
  <option value="new">Create New Shop</option>
</select>

selected="selected" a été créé en passant :selected => "22" aux options de f.select.

Le problème est que peu importe quelle option est sélectionnée, la valeur soumise est toujours "22".

Je remarque qu'une entrée cachée est créée, que je crois que la cause du problème:

<input type="hidden" value="22" name="product[shop_attributes][id]" id="product_shop_attributes_id">

Ainsi, il y a 2 éléments avec id=product_shop_attributes_id.

Ce qui pourrait faire ce champ caché à générer?


Code pertinent de la création de la boîte de sélection:

<%= form_for @product do |f| %>
  <%= f.fields_for :shop do |sf| %>
    sf.select(:id, <options>, {:prompt => true, :selected => <default_value>})
  <% end %>
<% end %>

Relevant code du contrôleur:

def edit
  @product = Product.find(params[:id]) # the select box indeed gets it's initial value from @product
end

def update
  @temp = params.inspect
end

update.html.erb:

<%= @temp %>

Je vois ici toujours la même (quel que soit l'option choisie):

"product"=>{"shop_attributes"=>{"id"=>"22"},...}
Était-ce utile?

La solution 2

Le problème est, comme je l'ai mentionné dans la question, le champ d'entrée cachée avec le même id que le select.

J'ai ouvert un question distincte pour déterminer pourquoi cela se produit.

Autres conseils

Il n'y a rien de mal à les rails HTML générés. Il est probablement la façon dont vous accédez dans votre contrôleur. Pourriez-vous poster le code de rails d'origine qui a généré ce code HTML et le code que vous utilisez pour le traiter?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top