2011-07-21 12 views
6

Estoy trabajando en Ruby on Rails y no puedo entender cómo usar select_month en form_for. Lo que intento esUsando select_month en form_for

<%= form_for(@farm) do |f| %> 
<div class="field"> 
<%= f.label :harvest_start %><br /> 
<%= select_month(Date.today, :field_name => 'harvest_start') %> 
</div> 
<div class="actions"> 
<%= f.submit %> 
</div> 
<% end %> 

wich está emitiendo

["harvest_start", nil] 

gracias por su ayuda. lo siento si el formateo es incorrecto

+0

el siguiente código es lo que tengo que trabajar. –

+0

<%= f.label :harvest_start %>
<%= f.collection_select :harvest_start, Farm::MONTHS, :to_s, :to_s, :include_blank => true %>

+0

@ farm.harvest_start = params [: harvest_start] –

Respuesta

2

(esto fue respondida en los comentarios de T. Weston Kendall por lo que sólo lo que es una respuesta adecuada)

el siguiente código es lo que tengo que trabajar.

_form.html.erb

<div class="field"> 
    <%= f.label :harvest_start %><br /> 
    <%= f.collection_select :harvest_start, Farm::MONTHS, :to_s, :to_s, :include_blank => true %> 
</div> 

farms_controller.rb

@farm.harvest_start = params[:harvest_start] 

También me select_month a trabajar, pero que necesitaba la :include_blank y yo no quiero pasar el hora de averiguar qué hacer con el nil en una matriz.

2

Para utilizar seleccione el mes en consonancia con el resto de su creador de formularios, utilice date_select sin el día o por mes:

date_select(object_name, method, options = {}, html_options = {}) 

Sólo tiene que utilizar f.date_select :harvest_start, {order: [:month]} decir, añadir order: [:month] o discard_year: true, discard_day: true a la options hachís, según se especifica en el docs

El beneficio de esto se puede pasar en todas las opciones restantes como lo haría en el hash de opciones. Algo como:

<%= f.date_select :birth_date, {prompt: true, order: [:month]}, class: 'form-control' %> 
Cuestiones relacionadas