Rails 3 date_select pour l'année seulement
J'ai un formulaire dans mon Rails 3 app lorsque je veux créer un select
balise pour seulement l'année sur une méthode :grad_year
. J'ai tout de travail et de stockage correctement à l'aide de date_select
et l'ajout de :discard_month
et :discard_day
. Cependant lorsque je l'ai rendu @profile.grad_year
je reçois le mois et le jour des valeurs. Alors je me demandais comment stocker et de rendre seulement l'année pour @profile.grad_year
?
Ici est de la forme:
<%= 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 %>
Dans ma migration:
t.date :grad_year
Vous devez vous connecter pour publier un commentaire.
Rails a un
select_year
helper:http://apidock.com/rails/ActionView/Helpers/DateHelper/select_year
De sorte que votre code devrait ressembler à:
undefined method select_year for #<ActionView::Helpers::FormBuilder:0x1085b2198>
f.
au début.params[:profile][:grad_year] = params[:grad_year]
select_year
accepte unhtml_options
de hachage comme troisième argument. Vous pouvez passer en:name
et:id
valeurs pour correspondre au reste de votre formulaire.L'assemblage de tous les ci-dessus à partir de @alex_peattie réponse, je suis arrivé à l':
Comme avec le cas des OP question, mon cas a été fait au sein d'un
form_for
bloc,f.select_year
a déclenché une exception. Mais si vous venez d'utiliser la documentation de l':field_name
option, la balise sera l'iddate_grad_year
et le nomdate[grad_year]
qui ne sont pas ce que les Rails attend. À l'aide de l' (documenté que dans la partie supérieure de l'API):prefix
les changements d'optiondate
àprofile
.Donc c'est mieux que le #@%$^*& html_options de hachage, qui, en dépit de l'aide de rails depuis 5 ans maintenant, je n'arrive pas à obtenir le droit sans cinq essaie :-).
Oh Rails, combien je vous aime, mais en même temps, suis bien content de Débordement de Pile est autour de nous aider à comprendre vos délicieux idiosyncrasies!
select_year f.object.field_name ... :prefix => f.object_name
Ce select_year fonction est totalement tordu.
Voici enfin ce qui fonctionne:
il quelque chose comme cela dans les rails: