如何捕获集合选择表单中的键?

时间:2017-01-31 21:11:31

标签: ruby-on-rails-4

<%= f.input :divisor, collection: [["Weekly", 52], ["Monthly", 12], 
    ["Quarterly", 4]], as: :radio_buttons, label: false, input_html:
  {id: "divisor"} %>

表单将值保存到db,但我还想使用用户在show页面上选择的键字符串。我尝试在模型中使用case语句,如下所示:

before_save :set_plan
attr_accessor :plan

 def set_plan
case :divisor
when 52
  puts "weekly"
when 12
  puts "monthly"
when 4
  puts "quarterly"
end
end

1 个答案:

答案 0 :(得分:0)

而不是case :divisor在模型中使用case self.divisor。 如果您将该集合保存到某个表格中,那么使用self.divisor会给出您想要的字符串。

<强> E.g。 你像这样创建表plans

id|plan_val|title 1| 52 | Weekly 2| 12 | Monthly 3| 4 | Quarterly

然后你可以写这样的回调

before_save :set_plan

def set_plan
  puts Plan.find_by(plan_val: self.divisor).title
end