【问题标题】:no implicit conversion of String into Integer Ruby on Rails没有将 String 隐式转换为 Integer Ruby on Rails
【发布时间】:2017-06-30 19:36:14
【问题描述】:

我正在做一个从另一个控制器获取它的值的下拉字段,我这样定义它:

def dropdown
        @tarefa_list = Tarefa.all.map { |c| [c.Numero] [c.Resumo]}
     end

然后这样称呼它:

<%= f.select :Tarefa, @tarefa_list, {}, {class: "dropdown"} %>

Numero 是一个整数,Resumo 是一个字符串

我尝试查看表单时遇到的错误:

没有将字符串隐式转换为整数

  • 我可以做些什么来解决这个问题?

【问题讨论】:

  • Tarefa.all.map { |c| [c.Numero, c.Resumo] }Tarefa.all.map { |c| [ c.Resumo, c.Numero] } 假设 Numero 是标识符..
  • 现在它只显示第一个标识符,如果我把c.numero放在前面,它只显示numero,如果我把c.Resumo放在前面,它只显示resumo
  • @xdmanmagiconsei @tarefa_list 有合适的价值吗?
  • 我只是在那里定义它,我需要在其他地方定义一些东西吗?
  • 我有一个 tarefas_controller 用 Resumo Numero numemp 和 Tarefa 定义 tarefa,我希望只有这 2 个出现在 f.select 字段中

标签: ruby-on-rails ruby forms


【解决方案1】:

怎么样:

@tarefa_list = Tarefa.all.map { |c| [c.Numero, c.Resumo] }

然后:

<%= f.select :Tarefa do %>
  <% @tarefa_list.each do |c| -%>
    <%= content_tag(:option, c.first, value: c.last) %>
  <% end %>
<% end %>

它不漂亮,但我们可以从这里开始。

(基于:http://guides.rubyonrails.org/form_helpers.html#select-boxes-for-dealing-with-models

顺便说一句,我认为no implicit conversion of String into Integer 来自这样一个事实,即表达式[c.Numero] [c.Resumo] 试图获取[c.Numero] 定义的数组的c.Resumo 元素所以类似于[1,2,3]['a'] 正如你可以想象的那样,它不会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多