DATE字段的Rails脚手架中的问题

时间:2009-09-06 17:52:35

标签: ruby-on-rails datetime date scaffolding scaffold

当我使用Rails脚手架时,我无法访问页面来编辑字段。它向我展示了所有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 %>

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

模型sql:

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 ;

完整视图来源:

<% 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 %>

它可能是什么?

3 个答案:

答案 0 :(得分:11)

我在this linkone上找到了解决方案:

  

在您的应用程序中,您已设置   I18n.locale与不同的东西   比“en”而且你有以下内容   您视图中的简单代码:

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

你将无法将符号转换为字符串   date_select助手。问题可能是   通过给出date_select获救   像这样的帮助顺序:

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

或通过在yml文件中执行命令,通常位于config / locales / your_lang.yml之类   此

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

答案 1 :(得分:3)

这很可能是由本地化引起的。您输入的语言区域不同于:en(在application.rb或environment.rb中),但您尚未为月份名称声明适当的翻译,导致rails无法使用。您可以从GitHub下载标准翻译文件。

答案 2 :(得分:0)

你能否也显示错误信息?

<强>更新

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

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

或试试这个:

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

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