No commit activity in last 3 years
No release in over 3 years
Rails date and time fields generate multiple parameters which need t which need to be combined to create a coercible value. Teach virtus the trick with virtus-multiparams.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.9
~> 10.0
~> 3.0

Runtime

~> 1.0
 Project Readme

Virtus::Multiparams

Support for Rails-style multiparameters, which makes datetime_select and friends work with 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

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