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

Форма сохраняет значение в db, но я также хочу использовать строку ключа, выбранную пользователем на странице показа. Я попытался с помощью оператора выбора в модели, например, так:Как захватить ключ в форме выбора коллекции?

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 

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^