Атрибут 'валюта?' которая не является частью модели, называется виртуальными атрибутами. В Rails мы можем использовать виртуальные атрибуты, установив
attr_accessor :currency?
в вашей соответствующей_модели.рб.
Теперь вы можете использовать эту «валюту»? атрибут в вашей форме, как и другие атрибуты модели.
Для случая 2 условие проверки данных такого типа заключается в проверке их в представлении еще до того, как они войдут в модель. Вы должны использовать jquery / javascript или любой другой скрипт на ваш выбор. Здесь я предоставляю фрагмент кода jQuery.
Если вы новичок в использовании jquery в приложении rails, следуйте этому https://github.com/rails/jquery-rails
В вашем form_page.html.erb добавьте идентификаторы к элементам html.
<%= f.check_box :currency?, id: 'currency_checkbox' %>
и
<%= f.text_field :currency_code, id: 'currency_code' %>
Фрагмент jquery
curreny_checkbox = $('#curreny_checkbox')
currency_code = $('#currency_code')
$(currency_checkbox).on('change', function(){
if(this.checked)
currency_code.val('2')
else
currency_code.val('')
})
В вашем контроллере вы можете просто присвоить значения
def create
// other codes //
@obj.currency_code = params[:currency_code]
end