Как начинающий разработчик Ruby on Rails 3, я ищу рекомендации о том, как лучше всего проверить форму с помощью всего одного набора переключателей. Эта конкретная форма является частью веб-приложения с несколькими формами - моим контроллером для направления потока в разные формы в зависимости от выбранного ответа.
Мой фрагмент html.erb:
<%= form_for @selection do |f| %>
<%= f.error_messages %>
<div class="field">
<%= f.radio_button :answer, 'Y' %>
<%= f.label :answer, 'Y' %>
<br/>
<%= f.radio_button :answer, 'N' %>
<%= f.label :answer, 'N' %>
</div>
<div class="action">
<%= submit_tag 'Save', :name => 'save_button' %>
<%= submit_tag 'Continue', :name => 'submit' %>
</div>
<% end%>
Selection.rb (модель):
require 'active_model'
class Selection
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :answer
validates_presence_of :answer
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
Имея только один элемент формы, кроме кнопок отправки, я получил нулевую ошибку, когда не выбрал одну из переключателей. Мне удалось заставить проверку работать должным образом, когда я сделал одну из двух вещей - добавить другое поле в форму и модель или установить значение по умолчанию:
@selection = Selection.new(:answer => "N")
Я решил использовать решение по умолчанию, которое избавило от необходимости проверки, но мне было интересно, есть ли лучший способ настроить мое приложение, если мои пользователи не хотят предварительно выбранный ответ.