2011-07-21 29 views
6

我在Ruby on Rails中工作,我無法弄清楚如何在form_for中使用select_month。我試圖爲在form_for中使用select_month

<%= 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 %> 

至極的輸出

["harvest_start", nil] 

感謝你的幫助。對不起,如果格式不正確。

+0

下面的代碼是我的工作。 –

+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] –

回答

2

(這是回答了由T.韋斯頓肯德爾意見,以便只是使其成爲一個合適的回答)

下面的代碼是我開始工作。

_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] 

我也得到了select_month工作,但我需要的:include_blank,我不想花時間計算出如何處理數組中的零。

2

爲了您的表單生成器的其餘部分始終使用選擇一個月,使用date_select沒有一天或一個月:

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

只需使用f.date_select :harvest_start, {order: [:month]}即添加order: [:month]discard_year: true, discard_day: trueoptions哈希值,如規定​​

這樣做的好處是,您可以像在選項散列中那樣傳遞所有其他選項。例如:

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