Rails 3 date_select for year only - ruby-on-rails

I have a form in my Rails 3 app where I want to create a select tag for just the year on a method :grad_year. I have everything working - and storing - properly using date_select and adding :discard_month and :discard_day. However when I render #profile.grad_year I get the month and day values. So I'm wondering how to store and render only the year for #profile.grad_year?
Here is the form:
<%= f.date_select :grad_year, {:start_year => Time.now.year, :end_year => Time.now.year - 95, :discard_day => true, :discard_month => true}, :selected => #profile.grad_year %>
In my migration:
t.date :grad_year

Rails has a select_year helper:
http://apidock.com/rails/ActionView/Helpers/DateHelper/select_year
So your code should look like:
f.select_year(Date.today, :start_year => Time.now.year, :end_year => Time.now.year - 95, :field_name => 'grad_year')

Assembling all of the above from #alex_peattie's answer, I arrived at the following:
<%= select_year Date.today, :start_year => Time.now.year, :end_year => Time.now.year - 95, :field_name => :grad_year, :prefix => :profile %>
As with the OP's question, my case was done within a form_for block, so f.select_year threw an exception. But if you just use the documented :field_name option, the tag will have the id date_grad_year and name date[grad_year] which are not what Rails expects. Using the (documented only at the very top of the API) :prefix option changes date to profile.
So this is better than the ##%$^*& html_options hash, which, despite using rails for 5 years now, I cannot seem to get right without five tries :-).
Oh Rails, how I love you, yet at the same time am sure glad Stack Overflow is around to help us all understand your delightful idiosyncrasies!

This select_year function is totally screwy.
Here is finally what works:
<%= form_for(#user) do |f| %>
<%= select_year current_user.birth_year, { :prompt => "Year",
:start_year => Time.zone.now.year - 13,
:end_year => Time.zone.now.year - 80,
:field_name => :birth_year,
:prefix => :user },
class:"form-control" %>
<% ... %>
it aught to be like this in rails:
<%= f.select_year :birth_year, { :prompt => "Year",
:start_year => Time.zone.now.year - 13,
:end_year => Time.zone.now.year - 80},
class:"form-control" %>

Related

Rails date/year field

I want to input only year field in my rails form. I tried select_year but it doesn't work for me. select_date also gave me problem because my form models is in association. Is there any alternative idea.
Ref:- select_year
# Generates a select field for years that defaults to the current year that
# is named 'birth' rather than 'year'
<%= f.select_year(Date.today, :field_name => 'birth') %>
but if you don't have any column then just use
<%= select_year(Date.today) %>
Ref this and try something like
<%= select_year Date.today, :start_year => Time.now.year, :end_year => Time.now.year - 95, :field_name => :grad_year, :prefix => :profile %>

default value for dropdown collection day of birth field in rails?

rails 3.2.8
simpleform
Im trying to get a default value for each of the day, month, year fields a "Select from list" while keep the below code with styling. Tried nummerous attempts, anyone knows how to do this? Would be very much appreciated thx!
= p.label t(:date_of_birth)
= p.input :dob,
:class => "extra",
:as => :date, :start_year => Date.today.year,
:end_year => Date.today.year - 80,
:month => Date.today.month,
:order => [:day, :month, :year],
:label => false,
:input_html => { :style => "width: 102px" }
I think it is :include_blank => "Select from list"
ugh.. I found out myself after 30 minutes more digging, it was just a simple :prompt => "select" to assign to all 3 dropdowns of the dob collection.

Create a Year Dropdown Box FormBuilder In Ruby On Rails

I am trying to create a db that has a year attribute but I am having some difficulty. I created the scaffold and tryied to modify the _form.html.erb with this code:
<%= f.date_select :year, :start_year=>2000, :end_year=>Time.now.year %>
Tried to run the rails server and gave me this error:
1 error(s) on assignment of multiparameter attributes
I realized that I only wanted the year and not the day or month. Is there a way to do that? I tried :discard_month=>true but that just hides it, but still storing it.
Thanks in advance
Do something like:
<%= f.date_select :year, :order => [:year], :start_year => 2000, :end_year => Time.now.year, :prompt => {:year => "Select year"} %>
Because your year field is an int and not a datetime:
<%= f.select :year, (2000..Time.now.year).to_a, :include_blank => {:year => "Select year"} %>
Another alternative is select_year
e.g.,
select_year(Date.current, start_year: 2015, end_year: Date.current.year)

date_select dont show in rails

I'm using devise 1.5.3 with rails 3.1.3, ruby 192, Im following this tutorial: http://ecuadoronrails.org/creando-un-sistema-de-autenticacion-de-usuarios-en-ruby-on-rails/#more-186
in my views I have:
<div><%= f.label :fecha_de_vencimiento %></br>
<%= f.date_select(:fecha_vencimiento, :start_year => 1901, :end_year => 2011, :include_blank => true) %>
but when I go to http://localhost:3000/users/sign_up
i get a textfield with the label like any other field...not a date_select field
what im doing wrong? do I need to install any gem??????
in my config/locales/en.yml
month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre]
I'm not hundred percent sure, but did you try that ?
<%= f.date_select :fecha_vencimiento, {:start_year => 1901, :end_year => 2011, :include_blank => true} %>

nil :selected value for date helper in formtastic

I'm using the following code for a date field:
<%= f.input :date_of_birth, :selected => nil,
:order => [:day, :month, :year],
:prompt => {:day => "Day", :month => "Month", :year => "Year"},
:start_year => Time.now.year - 15,
:end_year => Time.now.year - 100 %>
Everything works as expected, except for :selected => nil. I'm using 0.9.7, all the specs pass, including the one regarding a nil :selected value. When I use this though, the current date is selected, save for the year, which doesn't exist.
Am I missing something here? I tried with :as => :date and that did't make any difference.
Tom
This is a known regression/bug in Formtastic right now. Expect a fix in the next gem release.
You could try to add :include_blank => true, maybe that helps?

Resources