Well, previouse article I had talked about What’s New in Rails4 ActiveModel?.
Today We are looking at view:
Assume we have an owner class which has many items and each items are usualy belongs to an owner:
1
2
3
| class Owner < ActiveRecord::Base
has_many :items
end
|
1
2
3
| class Item < ActiveRecord::Base
belongs_to :owner
end
|
Select box
- Rails3 & 4
In Rails3 & 4 if we want to build a select box with owner we could do it with a single method called:
1
| collection_select(:item, :owner_id, Owner.all, :id, :name)
|
Radio button & checkbox
- Rails3
In Rails3 we need do with the loops and builds each of the elements:
1
2
3
4
| <% @owners.each do |owner| %>
<%= radio_button_tag :owner_id, owner.id %>
<%= owner.name %>
<% end %>
|
HTML output:
1
2
| <input id="owner_id" name="owner_id" type="radio" value="1" /> Slow-draw
<input id="owner_id" name="owner_id" type="radio" value="2" /> Sheriff
|
- Rails4
Now in Rails4 we have collection_radio_buttons & collection_check_boxes
method which builds all elements from a collection:
1
2
| collection_radio_buttons(:item, :owner_id, Owner.all, :id, :name)
collection_check_boxes(:item, :owner_id, Owner.all, :id, :name)
|
Date field
- Rails3
At some points we must use date_select
form helper:
1
| <%= f.date_select :return_date %>
|
HTML output:
1
2
3
4
5
6
7
8
9
10
11
| <select id="item_return_date_1i" name="item[return_date(1i)]">
<option value="2008">2008</option>
...
</select>
<select id="item_return_date_2li" name ="item[return_date(2i)]">
<option selected="selected" value="1">January</option>
...
</select>
<select id="item_return_date_3i" name="item[return_date(3i)]">
...
</select>
|
- Rails4
Rails4 now there is a date_field:
1
| <%= f.date_field :return_date %>
|
HTML output:
1
| <input id="item_return_date" name="item[return_date]" type="date">
|