Checkboxes validation


#1

Hi Guys
i have this method for finding a list of items via check-boxes
def selected
conditions = [[]]
params[:result].each do |result_id|
conditions.first << ‘feature.uniquename=?’
conditions << result_id
end

     conditions[0] = conditions.first.join(' OR ')
     conditions=['1=1'] if conditions.empty?

     @items= Feature.find(:all, :conditions => conditions)
 end

however when no checkbox is checked and one hits the select button i
get this error.
“NoMethodError (You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each):”

i would like to either trap the error and display it in a “friendly way”
or not display anything at all.

i tried this in my view but it does not seem to help
<% if @items.length > 0 %>

<removed_email_address@domain.invalid do|item|%>
><%=item.uniquename%>
<%end%>

<%else%>
no selection
<%end%>

Thank you.


#2
 def selected
     conditions = [[]]
     params[:result].each do |result_id|
         conditions.first << 'feature.uniquename=?'
         conditions << result_id
     end if params[:result]


      conditions[0] = conditions.first.join(' OR ')
      conditions=['1=1'] if conditions.first.empty?

      @items= Feature.find(:all, :conditions => conditions)
  end

#3

i meant

  def selected
      conditions = [[]]
      params[:result].each do |result_id|
          conditions.first << 'feature.uniquename=?'
          conditions << result_id
      end if params[:result]


       conditions[0] = conditions.first.join(' OR ')
       conditions=['1=1'] if !conditions.first or conditions.first 

== ‘’

       @items= Feature.find(:all, :conditions => conditions)
   end

#4

Keynan P. wrote:

i meant

  def selected
      conditions = [[]]
      params[:result].each do |result_id|
          conditions.first << 'feature.uniquename=?'
          conditions << result_id
      end if params[:result]


       conditions[0] = conditions.first.join(' OR ')
       conditions=['1=1'] if !conditions.first or conditions.first 

== ‘’

       @items= Feature.find(:all, :conditions => conditions)
   end

Thanks Keynan!
How would i pass a message to the user informing him to make a
selection?
This is because with no selection the method seems make the browser
hang, till i manually stop the execution.


#5

the browser should not be hanging. pop in a few logger.debug statements
to find where your trapped in a loop.

As for notifying the user

def selected
conditions = [[]]
if params[:result]
params[:result].each do |result_id|
conditions.first << ‘feature.uniquename=?’
conditions << result_id
end
else
flash[:notice] = ‘Please select a feature name.’
end

       conditions[0] = conditions.first.join(' OR ')
       conditions=['1=1'] if !conditions.first or conditions.first

== ‘’

       @items= Feature.find(:all, :conditions => conditions)
   end