在我的数据库中我有这样的字段:
color_id
并在表单中使用此类代码,将其存储在db:
中= f.select :color_id, options_for_select([["белый", 1], ["желтый", 2], ["зеленый", 3], ["коричневый", 4], ["красный", 5], ["оранжевый", 6], ["серебристый", 7], ["серый", 8], ["синий", 9], ["фиолетовый", 10], ["черный", 11], ["другой", 12]], :selected => f.object.color_id), {:prompt => "Выберите цвет кузова"}, required: true
所以我决定不使用模型和db表,只是来自html表单的id,以及db中的这个id存储。
但如何在show动作中查看不是它,而是颜色?
我只能使用if,如:
- if c.color_id == 1
белый
- if c.color_id == 2
желтый
但也许有更优雅和更好的解决方案?如何在我的情况下将id更改为数组的颜色
答案 0 :(得分:2)
你可以定义方法颜色,它将根据color_id
放置文本def color(color_id)
colors[color_id]
end
def colors
["name1", "name2"]
end
请注意,数组从0开始,代码ID从1开始
答案 1 :(得分:2)
您可以在具有color_id字段的模型中创建一个Hash,如下所示:
COLORS = {"1" => "белый", "2" => "желтый",...}
然后你可以在模型中调用一个方法来获得打印颜色
def color
COLORS[color_id.to_s]
end