【问题标题】:Rails, converting an integer to array offsetRails,将整数转换为数组偏移量
【发布时间】:2015-11-20 22:47:03
【问题描述】:

根据反馈,我正在修改这个问题。如何使用常量(在模型中定义)将整数数组转换为视图页面上显示的一组值。我可以在我的表单页面上执行此操作,但还没有为索引找到它。

在索引页面上(如果 dbase 有等级:[0, 1, 2],页面应显示为 A+, A, B)

类似于一周中的几天所做的事情(例如http://hightechsorcery.com/2010/02/16/ruby-arrays-and-hashes-and-days-of-the-week/

....
<h4 class="h3"><%= @gradestemp %>

控制器标签控制器

  def index
    @labels = current_user.labels
    grad = []
    @gradestemp = Contact::GRADES.each_with_index { |x, i| grad << [x, i] }
    render
  end

MODEL 注意:GRADES 是一个常数 - 我也尝试在标签中使用 类标签

  GRADES  = [["A+",0 ], ["A",1], ["B", 2], [ "C",3], [ "D",4], [ "-",5]]

我可以在 Labels 控制器中访问 Contact GRADES 吗?

我找到了这个 SO - 这与我正在尝试做的类似: Ruby: How to store and display a day of the week?

根据下面的建议,这成功了:

<h4 class="h3"><%= print_campaign.grades.compact.map{|idx| Contact::GRADES[idx][0]}.join(' ')  %>

【问题讨论】:

  • (1) 您的控制器方法(想想 CRUD)是否正确设置? (2) 为什么你的 Label 模型是空的?它应该与您的联系人有关联。 (3) 请将您的帖子缩小到一个问题。 (4) 编辑您的帖子(使用之前的详细信息,不是 cmets)并正确格式化代码。直接粘贴您的代码,然后单击{} 按钮进行格式化。我试着编辑它的格式,但你的帖子太混乱了,我无法处理
  • 嗨 - 感谢您的反馈 - 我更新了这个问题。是的,我在想我的问题是我没有正确保存数组,但也许它更像是一个前端(我如何获取数组(来自标签)并渲染回来以显示一个 Contact::GRADES 选择。
  • 我建议您发布任何错误消息。你怎么知道它没有正确保存?它是否正确显示在数据库中,但不在视图中?
  • 好的 - 见上文 - 在表单输入中,我将 Contact::GRADES 替换为明确的,现在可以使用,因此当通过 EDIT 进行时,它会显示我选择的集合(A+、A、乙)。那么为什么在 EDIT 上引用 Contact::GRADES 不起作用?
  • 不是很清楚,但是如果你只想转换像 [1,2,3] 这样的数组,为什么不直接做 [1,2,3].map{|idx|等级[idx]}.join(' ')

标签: ruby-on-rails arrays ruby multidimensional-array


【解决方案1】:

[0, 1, 2].map {|g| Contact::GRADES.select.map {|letter, val| val == g; letter}

虽然GRADES 看起来像Hash 一样好得多:

GRADES = { "A+" => 0, "A" => 1, .. }

那么你的查找会简单得多

[0, 1, 2].map {|g| Contact::GRADES.key(g) }

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 2019-04-04
    • 1970-01-01
    • 2023-03-19
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多