Skip to content

Commit

Permalink
Merge pull request formtastic#674 from cthiel/master
Browse files Browse the repository at this point in the history
Fix all check_boxes being checked if collection given as array
  • Loading branch information
justinfrench committed Sep 10, 2011
2 parents 8843ed2 + 7691f5b commit a77267c
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 8 deletions.
2 changes: 1 addition & 1 deletion lib/formtastic/inputs/base/collections.rb
Expand Up @@ -82,7 +82,7 @@ def collection_for_boolean
def send_or_call(duck, object)
if duck.respond_to?(:call)
duck.call(object)
else
elsif object.respond_to? duck.to_sym
object.send(duck)
end
end
Expand Down
8 changes: 1 addition & 7 deletions lib/formtastic/inputs/check_boxes_input.rb
Expand Up @@ -153,13 +153,7 @@ def disabled?(value)

def selected_values
if object.respond_to?(method)
if options[:collection].is_a?(Array) and
options[:collection].flatten.all? {|i| i.is_a?(String) or i.is_a?(Integer)}

selected_items = options[:collection]
else
selected_items = [object.send(method)].compact.flatten
end
selected_items = [object.send(method)].compact.flatten

[*selected_items.map { |o| send_or_call_or_object(value_method, o) }].compact
else
Expand Down
4 changes: 4 additions & 0 deletions spec/inputs/check_boxes_input_spec.rb
Expand Up @@ -410,6 +410,10 @@
output_buffer.should have_tag("form li fieldset ol li label[@for='author_post_ids_#{post.last}']")
end
end

it "should not check any items" do
output_buffer.should have_tag('form li input[@checked]', :count => 0)
end
end

end
Expand Down

0 comments on commit a77267c

Please sign in to comment.