Skip to content

closer/virtus-multiparams

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Rails multiparams support for virtus models

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Ruby 98.9%
  • Shell 1.1%