【问题标题】:Issue with Rails multi select options fieldRails 多选选项字段的问题
【发布时间】:2023-04-02 16:27:01
【问题描述】:

我在我的模型('Bambino')中设置了一个多选字段来为字符串属性'status'分配一个值。从我的部分表单中找到以下代码:

 <%= f.select(:status, options_for_select([['segnalato','segnalato'],
['inserito','inserito'],['drop','drop'],['concluso','concluso']])) %>

当我想编辑我的记录时,编辑表单不会返回之前存储的值,而是自动将默认值设置为“segnalato”(例如:如果我创建一个新记录,将状态设置为“inserito”及之后我想编辑记录,我得到了默认值为“segnalato”的编辑表单,而我希望在“inserito”字段中看到)。

以这种方式,当您编辑记录时,出现数据输入错误的机会非常高。为什么这样?有没有办法检索创建记录时分配的正确“状态”值?谢谢

【问题讨论】:

  • Bambino 一定会喜欢它

标签: ruby-on-rails


【解决方案1】:

您确定@your_record.status 等于其中一个值吗?在进一步调试之前检查一下。

【讨论】:

    【解决方案2】:

    虽然Andrey Deineko 的答案可能是您想要的答案,但还有一种更好的方法来实现您正在做的事情:enum

    #app/models/bambino.rb
    class Bambino < ActiveRecord::Base
       enum status: ['segnalato', 'inserito', 'drop', 'concluso']
    end
    

    这将使您能够使用following

    <%= f.select :color, Banbino.status.to_a.map { |w| [w.humanize, w] } %>
    

    这将为status 存储一个数字,同时允许您定义每个数字的含义。它不会对加载预先选择的对象做任何事情(这就是Andrey 的答案会做的事情),但会让您能够使您的应用程序和select 更简洁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多