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 %>
<[email protected] do|item|%>
><%=item.uniquename%>
<%end%>
<%else%>
no selection
<%end%>
Thank you.
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
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
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.
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