Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [Rails] select_tag

  1. #1

    [Rails] select_tag

    Ciao a tutti,

    scusate se rompo ancora ma ho un piccolo problema:

    Nella form di inserimento dati di un prodotto richiamo l'elenco delle categorie a cui associare il prodotto stesso tramite una semplice select:

    codice:
    <%= select_tag 'product[product_category_id]', options_from_collection_for_select(@product_categories, 'id', 'name') %>
    Funziona, nel senso che riesco ad inserire correttamente il valore a DB ma non ho capito bene come mantenere lo stato selected="selected" quando, ad esempio, la form mi restituisce errore.

    Grazie.

  2. #2
    Ho aggiunto questo:

    codice:
    params[:product][:product_category_id].to_i
    come parametro selected al metodo options_from_collection_for_select()

    da cui:

    codice:
    select_tag 'product[product_category_id]', options_from_collection_for_select(@product_categories, 'id', 'name', params[:product][:product_category_id].to_i)
    ma funziona solo nel caso vi sia già stato un post di valori, nel momento in cui accedo la prima volta alla form di inserimento (vista: new) ho un errore che comincia riportando:

    codice:
    You have a nil object when you didn't expect it!
    You might have expected an instance of ActiveRecord::Base.
    The error occurred while evaluating nil.[]
    Molto probabilmente perchè "params" è vuoto.

    Come ovviare?

    Tnx.

  3. #3
    Perché non usi un form_for @product invece di un form_tag?
    In questo modo avrai

    codice:
    form.collection_select :category_id, @product_categories, :id, :name

  4. #4
    Uhm, per ora ho trovato questa soluzione per trovare la option selezionata:

    codice:
    opt = params[:product][:product_category_id].to_i unless params[:product].nil?
    Ma ... esiste una soluzione più elengante?

  5. #5
    Originariamente inviato da weppos
    Perché non usi un form_for @product invece di un form_tag?
    In questo modo avrai

    codice:
    form.collection_select :category_id, @product_categories, :id, :name
    Ah ok perfetto, così funziona automaticamente.

    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.