当我使用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 %>
它可能是什么?
答案 0 :(得分:11)
在您的应用程序中,您已设置 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>