J'ai un problème très simple mais je ne trouve pas de solution sympa. J'ai un code de recherche en Ruby (par exemple, les étudiants qui vivent dans un État):RoR Exemple de recherche
# State lookup (id, name)
class State < ActiveRecord::Base
has_many :students
end
# Class that belogs to a state
class Student< ActiveRecord::Base
belongs_to :state
end
et dans la vue/étudiants/vue new.html.erb, j'afficher les états comme un menu déroulant:
<p>
<%= f.label :state %><br />
<%= f.collection_select :state, State.find(:all),
:id, :name, :prompt => "Select a State" %>
</p>
jusqu'à présent, si bon, mais quand je frappe sauver je suis arrivé une erreur:
State(#37872860) expected, got String(#21001240)
ce qui semble raisonnable, que j'envoie une chaîne au lieu d'un objet Etat à la Student.create méthode.
Quelle est la meilleure façon de gérer cela dans RoR? Je récupère l'objet State dans le contrôleur à la main et le remplace dans le hash des paramètres, mais je pense que cela devrait être un meilleur moyen.
Merci beaucoup. Fernando
Merci JDL, mais j'ai essayé cela et maintenant j'obtiens: la méthode non définie 'state_id' pour # sur l'étape de rendu. –
Fernando
Pouvez-vous poster la ligne form_tag de votre vue? – jdl
jdl, merci beaucoup. Le problème était que dans la table de mes étudiants, la colonne d'état s'appelait 'state', pas 'state_id'. Cela fait: state_id fall si référencé dans la vue. Merci à votre indice trouvé le problème dans la table, recréer et maintenant il fonctionne comme vous l'avez dit (f.collection_select: state_id, ... même que c'était). Cordialement; fernando – Fernando