Sha256: 42a334c16b9cddaa3c9fe38a291c808ff4c8240c325ac0d6675f91998e21b046

Contents?: true

Size: 1.67 KB

Versions: 2

Compression:

Stored size: 1.67 KB

Contents

# Virtus::Multiparams

Support for Rails-style multiparameters, which makes `datetime_select` [and
friends](http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html)
work with [Virtus](https://github.com/solnic/virtus) objects.

Rails Date, Time and DateTime selectors all use multiparameters. This means
they break one attribute into separate parameters for each input, like year,
month and day, and reconstitute these multiple parameters into a single
parameter to be passed back into a model as an attribute.

## Usage

```ruby
class PostForm
  include Virtus
  include Virtus::Multiparams

  attribute :title, String
  attribute :publish_at, DateTime
end

# app/views/posts/new.html.erb
<%= form_for @post_form do |form| %>
  <%= form.label :title %>
  <%= form.text_field :title %>

  <%= form.label :publish_at %>
  <%= form.datetime_select :publish_at %>
  <!-- Which does something like:
    <select name="post_form[publish_at(i1)]"><option>2015</option>...</select>
    <select name="post_form[publish_at(i2)]"><option value="1">January</option>...<option value="12">December</option></select>
    <select name="post_form[publish_at(i3)]"><option>1</option>...</select>
    <select name="post_form[publish_at(i4)]"><option>1</option>...<option>24</option></select>
    <select name="post_form[publish_at(i5)]"><option>1</option>...<option>60</option></select>
    <select name="post_form[publish_at(i6)]"><option>1</option>...<option>60</option></select>
  -->

  <%= form.submit %>
<% end %>

# app/controllers/posts_controller.rb
class PostsController
  def new
    @post_form = PostForm.new
  end

  def create
    @post_form = PostForm.new(params[:post_form])
    # ...
  end
end
```

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
virtus-multiparams-0.1.1 README.md
virtus-multiparams-0.1.0 README.md