In my view I have:
<%= f.date_select :start %>
and I get the error message: can't convert Symbol into String
I know that it's related to it.date.order rule, but I see that rails-i18n include it:
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/it.yml#L51
what's wrong here?
full back trace: https://gist.github.com/4007557
EDIT: running I18n.t 'date.order' in the console give me => [:day, :month, :year]. That it's correct... so why date_select doesn't works?
issue on GitHub repo: https://github.com/svenfuchs/rails-i18n/issues/273
I had a similar if not the same issue in the past. At the time I fixed it by using the following:
date:
order: [ !ruby/symbol day, !ruby/symbol month, !ruby/symbol year ]
As far as I understand the rails docs about date_select it wants to have a string.
If :start is the name of your I18n, you should do <%= f.date_select t(:start) %> as far as I remember.
You don't have to touch you form: it's a translation problem. You should add in your it.yml file the lines you will find here: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale.
If like in my case you are only working with years and don't want to add translations for every language with i18n just for a year selection, you can add :locale => 'en' just for that date like this:
<%= f.date_select :start, :start_year => 1940, :end_year => Date.today.year, :discard_day => true, :discard_month => true, :locale => 'en' %>
This is a translation problem: you have to add :order rule to your it.yml file or use this line in form.
<%= f.date_select(:start, :order => [:day, :month, :year]) %>
Related
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 %>
Very simple question, but can't seem to work it out!! I'm creating a date of birth form, to ensure that a user can only sign up if they are over 18. I've got a date_select, and am fine setting the start year, but how do I set the end year so that it is 18 years ago? I'm going to use validators in the model as well, but don't want someone to be able to enter the wrong info in the first place.
I've looked all over, but can only find info on how to use time.ago with validators, which I've already sorted, not in the form itself.
Or, alternatively, which might be better - is there a way of having a date_select dropdown for the first two items (day & month), and a text-box for the year? Something along these lines:
<%= f.date_select :date_of_birth, :order => [:day, :month] %><%= f.text_field :date_of_birth.year, :length => 4 %>
This is what I have so far:
<%= f.label :date_of_birth %><br />
<%= f.date_select :date_of_birth, :order => [:day, :month, :year], :start_year => 1900, :end_year => %>
Thanks!!
Try
Time.now.year - 18
or
Date.today.year - 18
Found the answer on this page. Just changed it to -18 instead of +5:
<%= f.date_select :date_of_birth, :order => [:day, :month, :year], :start_year => 1900, :end_year => Time.now.year - 18 %>
You can also do:
18.years.ago.year
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)
I have a date_select field in my rails application as follows:
<%= f.date_select :dateinstructed %>
I would like to re-order the drop down lists show they output as:
DD/MM/YYYY
According to what I have read you can use the :order option, but I am unsure how to actually use this option:
<%= f.date_select :dateinstructed, :order = {:day, :month, :year} %>
Obviously this isn't right, but what am I supposed to put in place of the:
:day, :month, :year
Any help would be appreciated!
Thanks,
Danny
I think it should be:
<%= f.date_select :dateinstructed, :order => [:day, :month, :year] %>
Hopefully it helps.
How about this:
prompt: { day: 'Select day', month: 'Select month', year: 'Select year' }
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?