Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collection radio buttons / check boxes helpers #4851

Merged
merged 22 commits into from
Feb 2, 2012

Conversation

carlosantoniodasilva
Copy link
Member

@rafaelfranca and I have been working to move SimpleForm's collection_radio_buttons and collection_check_boxes helpers to Rails. They work in a similar way to collecion_select, but generating a collection of radio_button/check_box + label for each item in the given collection. Here is an example usage:

collection_check_boxes :post, :author_ids, Author.all, :id, :name

It'd output something like:

<input id="post_author_ids_1" name="post[author_ids][]" type="checkbox" value="1" />
<label for="post_author_ids_1">D. Heinemeier Hansson</label>
<input id="post_author_ids_2" name="post[author_ids][]" type="checkbox" value="2" />
<label for="post_author_ids_2">D. Thomas</label>
<input name="post[author_ids][]" type="hidden" value="" />

It is possible to customize the output by giving a block to the helper. This block receives an argument, which is an "special builder" that is able to generate a label and radio_button/check_box for the given item context. For instance:

collection_check_boxes(:post, :author_ids, Author.all, :id, :name) do |b|
  b.label(:"data-value" => b.value) { b.check_box + b.text }
end

The helpers label and check_box/radio_button are available inside the block, scoped to the current element being rendered, that also accepts extra html options. The current text and value methods are also available for use, allowing better customization.

This PR also adds the ability for collection_select to receive proc values as text_method and value_method, something we've added to collection check_boxes/radio_buttons/select helpers in SimpleForm.

Thanks.

[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
module

[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
collection_radio_buttons

[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
* Extract value sanitization from default name and id method and new
  collection helpers;
* No need to sanitize value in default name and id always;
* Improve value_before_type_cast to avoid concating the same method name
  string twice.

[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
This will make it easy for the user to handle how check box/radio and
labels should be generated, abstracting any text/value/default html
options required to make it work.

[Carlos Antonio da Silva + Rafael Mendonça França]
…itance

[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
@jeremy
Copy link
Member

jeremy commented Feb 2, 2012

/cc @josevalim

@josevalim
Copy link
Contributor

@jeremy it looks good to me, let's merge?

@jeremy
Copy link
Member

jeremy commented Feb 2, 2012

Nice job, especially with updated docs and guide.

There are a lot of other refactorings and style changes included, too, making it hard to review the code carefully.

👍 here but please do separate pulls for refactoring and style changes next time!

@carlosantoniodasilva
Copy link
Member Author

@jeremy thanks, we will be paying more attention to that from now on.

And options_from_collection_for_select as well.

[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
[Carlos Antonio da Silva + Rafael Mendonça França]
collection_radio_buttons

[Carlos Antonio da Silva + Rafael Mendonça França]
josevalim pushed a commit that referenced this pull request Feb 2, 2012
Collection radio buttons / check boxes helpers
@josevalim josevalim merged commit eb18260 into rails:master Feb 2, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants