在form_for中使用select_month

时间:2011-07-21 01:02:52

标签: ruby-on-rails ruby-on-rails-3

我在Ruby on Rails上工作,我无法弄清楚如何在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]

谢谢你的帮助。抱歉,如果格式不正确。

2 个答案:

答案 0 :(得分:3)

为了将选择月份与表单构建器的其余部分保持一致,请使用date_select而不是日期或月份:

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

只需使用f.date_select :harvest_start, {order: [:month]},即将order: [:month]discard_year: true, discard_day: true添加到options哈希,如docs

中所述

您可以像在选项哈希中一样传入所有剩余选项。类似的东西:

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

答案 1 :(得分:2)

  

(这在T. Weston Kendall的评论中得到了回答,所以只是让它成为一个正确的答案)

以下代码是我开始工作的。

<强> _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,我不想花时间搞清楚如何处理数组中的nil。