Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 4 radio button form helper, true not validating

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
like image 726
Matt Ramirez Avatar asked Oct 01 '13 14:10

Matt Ramirez


Video Answer


2 Answers

The better validation for true false I've found is inclusion. So your validation might be:

  validates :needs_dist, inclusion: [true, false]
like image 126
trh Avatar answered Oct 24 '22 08:10

trh


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?' }
like image 38
Lazarus Lazaridis Avatar answered Oct 24 '22 07:10

Lazarus Lazaridis