I have simple yes or no radio buttons attached to :needs_dist. When I submit the form with No selected it works just fine, but when I have Yes selected, it is throwing an error for validation? It only validates when :needs_dist => true.
Model
validates_presence_of :contact_name, :email, :postal_code, :series_id, :product_id, :company_name, :needs_dist
View
<%= f.radio_button(:needs_dist, "false") %>
<%= f.label :needs_dist, "Yes" %>
<%= f.radio_button(:needs_dist, "true") %>
<%= f.label :needs_dist, "No" %>
Controller (just in case)
def create_quote
@quote_request = QuoteRequest.new safe_quote_params
if @quote_request.save
@email = SiteMailer.quote_request(@quote_request).deliver
render :template => "request/quote_sent"
else
@series = Series.find params[:quote_request][:series_id] unless params[:quote_request][:series_id].blank?
render :template => "request/quote.html"
end
end
The better validation for true false I've found is inclusion. So your validation might be:
validates :needs_dist, inclusion: [true, false]
In your model you define that the :need_dist
attribute must be present a.k.a. not false
, not nil
Since you have assigned the "false" value to your "Yes" radio button , this validation fails.
UPDATE: I found another way to accomplish what you want. I wrote the solution here.
validates :needs_dist, :presence => { :if => 'needs_dist.nil?' }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With