Je reçois un étrange problème avec le code suivant.Obtenir un étrange Nil dans Rails avec Select
La vue (partie):
<p>
<%= label :maintenance, :name %>
<%= text_field(:maintenance, :name, :size => 20) %>
</p>
<p>
<%= label :maintenance, :type %>
<%= select :maintenance, :type, @m_types %>
</p>
Si je retire le text_field ou le déplacer en dessous de la sélection, je reçois un nul pour le: entretien dans la sélection.
la méthode du contrôleur:
def new
@log = Log.new
@maintenance = Maintenance.new
@m_types = Maintenance.types
@cars = Car.all
print @maintenance
if not params[:car].nil?
@log.car = params[:car]
end
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @log }
end
end
Je suppose que ce doit être quelque chose d'étrange d'évaluation Ruby, mais je ne sais pas ce que je cherche. J'ai cherché avec Google, mais ne pas savoir ce que vous cherchez rend très difficile.
TIA!
Merci à tous ceux qui ont aidé, mais j'ai refaçonné mes modèles, changé ma colonne d'héritage et ça marche maintenant. Je pense que le problème était que j'utilisais: type comme colonne d'héritage, donc quand j'ai demandé de mettre le: type dans le select avant de faire le champ text_field il ne savait pas que j'utilisais un objet Maintenance et qu'il cherchait un objet régulier. Tout objet Ruby normal utilise le champ: type pour autre chose. Donc, il cherchait le type: set à un module, et pas à une chaîne comme j'essayais de le faire. Je peux voir mon nouveau setup qui fonctionne. J'espère que quelqu'un peut apprendre de cela.
* Que * exactement vous obtenez un 'nil' et * où * t-il exactement arrive? –
Comme je l'ai dit là-haut, le: maintenance dans le select est nul. Mais quand j'imprime @maintenance dans le contrôleur, ce n'est pas nul. – dharga
Il peut être utile de voir vos modèles et d'obtenir une liste d'attributs/colonnes pour chacun. – EmFi