2009-09-06 6 views
1

Lorsque j'utilise Rails échafaudage, je ne peux pas accéder à la page pour modifier les champs. Cela me montre une sorte de problème avec tous les champs DATE. Voici l'erreur:Problème dans l'échafaudage Rails pour les champs DATE

can't convert Symbol into String 

Extracted source (around line #124): 

    121: </p> 
    122: <p> 
    123:  <%= f.label :dataDeCadastro %><br /> 
    124:  <%= f.date_select :dataDeCadastro %> 

et une partie du stackTrace:

/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/date_helper.rb:564:in `include?' 
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/date_helper.rb:564:in `select_date' 
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/date_helper.rb:832:in `to_date_select_tag_without_error_wrapping' 
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/active_record_helper.rb:268:in `to_date_select_tag' 
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/date_helper.rb:179:in `date_select' 
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/date_helper.rb:889:in `date_select' 
app/views/usuarios/edit.html.erb:124 
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/form_helper.rb:313:in `fields_for' 
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_view/helpers/form_helper.rb:253:in `form_for' 
app/views/usuarios/edit.html.erb:3 

Et le sql modèle:

CREATE TABLE `usuarios` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `usuario` varchar(50) DEFAULT NULL, 
    `recebeNews` smallint(1) DEFAULT NULL, 
    `cidade` varchar(30) DEFAULT NULL, 
    `email` varchar(40) DEFAULT NULL, 
    `endereco` varchar(70) DEFAULT NULL, 
    `estado` varchar(3) DEFAULT NULL, 
    `cep` varchar(10) DEFAULT NULL, 
    `numero` varchar(10) DEFAULT NULL, 
    `telefone` varchar(30) DEFAULT NULL, 
    `cnpj` varchar(20) DEFAULT NULL, 
    `cpf` varchar(18) DEFAULT NULL, 
    `inscricaoEstadual` varchar(20) DEFAULT NULL, 
    `rg` varchar(15) DEFAULT NULL, 
    `complemento` varchar(70) DEFAULT NULL, 
    `sexo` varchar(1) DEFAULT NULL, 
    `bairro` varchar(70) DEFAULT NULL, 
    `telefoneResidencial` varchar(10) DEFAULT NULL, 
    `dddTelefoneCelular` varchar(2) DEFAULT NULL, 
    `dddTelefoneComercial` varchar(2) DEFAULT NULL, 
    `dddTelefoneResidencial` varchar(2) DEFAULT NULL, 
    `ramalDoTelefoneComercial` varchar(10) DEFAULT NULL, 
    `telefoneCelular` varchar(10) DEFAULT NULL, 
    `telefoneComercial` varchar(10) DEFAULT NULL, 
    `creditoPessoal` smallint(1) DEFAULT NULL, 
    `descontoPessoal` smallint(1) DEFAULT NULL, 
    `motivoDoBloqueio` varchar(255) DEFAULT NULL, 
    `nomeNaReceitaFederal` varchar(255) DEFAULT NULL, 
    `valorDoCreditoPessoal` double DEFAULT NULL, 
    `valorDoDescontoPessoal` double DEFAULT NULL, 
    `bloqueio` smallint(1) DEFAULT NULL, 
    `dataDeCadastro` datetime DEFAULT NULL, 
    `dataLimiteDoDescontoPessoal` datetime DEFAULT NULL, 
    `situacaoNaReceitaFederal` varchar(255) DEFAULT NULL, 
    `dataDeNascimento` datetime DEFAULT NULL, 
    `senha` varchar(255) DEFAULT NULL, 
    `interior` smallint(1) DEFAULT NULL, 
    `observacao` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `email` (`email`) 
) ENGINE=InnoDB AUTO_INCREMENT=5754 DEFAULT CHARSET=latin1 ; 

source complet de la vue:

<% form_for(@usuario) do |f| %> 
<%= f.error_messages %> 

<p> 
    <%= f.label :usuario %> 
    <%= f.text_field :usuario %> 
</p> 
<p> 
    <%= f.label :cpf, "CPF" %> 
    <%= f.text_field :cpf %> 
</p> 
<p> 
    <%= f.label :rg, "RG" %> 
    <%= f.text_field :rg %> 
</p> 
<p> 
    <%= f.label :cnpj, "CNPJ" %> 
    <%= f.text_field :cnpj %> 
</p> 
<p> 
    <%= f.label :sexo, "Sexo" %><br> 
    <%= f.radio_button :sexo, :M %>M<br> 
    <%= f.radio_button :sexo, :F %>F 
</p> 
<p> 
    <%= f.label :dataDeNascimento, "Data de Nascimento" %> 

    <%= f.date_select :dataDeNascimento %> 
</p> 
<p> 
    <%= f.label :endereco %> 
    <%= f.text_field :endereco %> 
</p> 
<p> 
    <%= f.label :cidade, "Cidade" %> 
    <%= f.text_field :cidade %> 
</p> 
<p> 
    <%= f.label :estado, "Estado" %> 
    <%= f.text_field :estado, :maxlength => "2" %> 
</p> 
<p> 
    <%= f.label :cep, "CEP" %> 
    <%= f.text_field :cep, :maxlength => "10" %> (00000-000) 
</p> 
<p> 
    <%= f.label :telefone, "Telefone" %> 
    <%= f.text_field :telefone %> 
</p> 
<p> 
    <%= f.label :email %> 
    <%= f.text_field :email %> 
</p> 
<p> 
    <%= f.label :senha, "Senha" %> 
    <%= f.password_field :senha %> 
</p> 
<p> 
    <%= f.label :senha_confirmation, "Confirmação da Senha" %> 
    <%= f.password_field :senha_confirmation %> 
</p> 
<p> 
    <%= f.label :recebeNews %><br /> 
    <%= f.check_box :recebeNews %> 
</p> 
<p> 
    <%= f.submit "Enviar" %> 
</p> 
<% end %> 

Que pourrait-il être?

Répondre

11

que j'ai trouvé la solution sur this link et ce one:

When in your application you have set the I18n.locale to something different than "en" and you have the following simple code in your view:

<%= date_select("user_info", "birthdate") %> 

You'll get the can't convert Symbol into String for the date_select helper. The problem can be rescued by giving the date_select helper order like this:

<%= date_select("user_info", "birthdate", :order => [:day,:month,:year]) %> 

or by doing order in the yml file usually located at config/locales/your_lang.yml like this

date: 
    formats: 
    default: "" 
    long: "" 
    short: "" 
    order: 
    - :year 
    - :month 
    - :day 
+0

Cela résout clairement l'erreur, mais d'autres problèmes comme les traductions de mois manquant augmenter après. Je suggère à quiconque ayant ce problème de copier l'ensemble de l'arbre de la date de https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale – chech

0

Pourriez-vous également afficher le message d'erreur?

MISE À JOUR:

<p> 
    <%= f.label :dataDeNascimento, "Data de Nascimento" %> 

    <%= f.date_select "dataDeNascimento" %> 
</p> 

ou essayez ceci:

<p> 
    <%= f.label :dataDeNascimento, "Data de Nascimento" %> 

    <%= date_select "usario", "dataDeNascimento" %> 
</p> 
+0

pourriez-vous me montrer votre modèle? – Lichtamberg

+0

s'il vous plaît montrez-moi votre code-formulaire complet. Serait bon de voir votre déclaration SQL comme code formaté dans votre texte de question. – Lichtamberg

+0

tous les détails maintenant en question –

3

Ceci est très susceptible d'être causé par la localisation. Vous avez entré un autre paramètre linguistique standard que: en (dans application.rb ou environment.rb), mais vous n'avez pas déclaré les traductions appropriées pour les noms de mois, ce qui a provoqué des erreurs dans les rails. Vous pouvez télécharger des fichiers de traduction standard à partir de GitHub.

+0

Même erreur que ci-dessus - c'était la cause pour moi. –

Questions connexes