8
votes

Pays attendu, a eu une erreur de chaîne

J'ai 2 modèles "pays" et "League", le pays a de nombreuses ligues et la ligue appartient au pays. Lors de l'ajout d'une ligue, j'ai une liste de liste avec des pays et lorsque le formulaire est soumis, le pays réel est envoyé: xxx pré>

mais je reçois ce message d'erreur: P>

Country expected, got String


0 commentaires

6 Réponses :


7
votes

Vous devez envoyer Country_ID (qui est la clé principale) au lieu de nommer «l'Angleterre» dans cette demande. Les relations sont associées aux clés primaires.

<%= f.select :country, Country.all.collect {|c| [ c.name, c.id ] } %>


2 commentaires

Je viens de faire ceci: <% = f.select: artiste, artiste.Allect.Collect {| a | [Nom, A.Id]}%> et obtenu ce artiste (# 2198585660) attendu, got de chaîne (# 2151988680)


@Joesak, j'ai eu ce même problème et j'avais ajouté : artiste au lieu de : artiste_id à la liste Paramètres autorisée dans mon contrôleur.



7
votes

Je reçois cette erreur:

class OtherModel
   belongs_to :artist

   validates :artist, :presence => true

   #...
end

<%= form_for_other.collection_select :artist_id, 
                                     Artist.all, :id, :name,
                                     :prompt => true %>


3 commentaires

Où avez-vous dit cela, le modèle d'artiste?


@hubble Où avez-vous placé la validation?


Dans le modèle "appartient à" l'artiste "ou" has_one "



1
votes

Le modèle de ligue doit faire référence au pays par son ID (pays_id) et non la chaîne.


0 commentaires

8
votes

Vous devez utiliser: country_id au lieu de: pays xxx


0 commentaires

0
votes

Pour d'autres personnes qui répondent au même problème:

Cette erreur est dû au moment où vous avez deux champs de votre formulaire comme: p> xxx pré>

puis rails s'écrasera avec l'erreur : Randis hachage (GET String) pour param p>

La solution est assez simple: changez "vidéo" à autre chose. E.g.: P>

video_origin_url: 'some string'
video['url']: 'some url'


0 commentaires

0
votes

Je reçois cette erreur:

Pays (#xxx) attendue, obtient une chaîne (#xxx) C'était comme ça que je l'ai réparé dans Rails 3.0.x: P>

<%= f.collection_select :country_id, Country.all.collect,  :id, :name %>


0 commentaires