【问题标题】:How do I use select_year with form_for?如何将 select_year 与 form_for 一起使用?
【发布时间】:2013-10-08 23:08:22
【问题描述】:

我的表格如下:

<%= form_for(@car, :html => {:class => 'form-horizontal' }) do |f| %>
  <% if @car.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@car.errors.count, "error") %> prohibited this car from being saved</h2>
      <ul>
        <% @car.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
  <div class="field">
    <%= f.label :price %><br />
    <%= f.text_field :price %>
  </div>

  <div class="field">
    <%= f.label :model_year %><br />
    <%  %>
  <% end %>
</div>

我想为从 100 年前开始到未来一年的车型年选择一个系列。我试过了

<%= f.select_year :model_year%>

但它说 select_year 不是一个有效的方法。试过了

<%= f.date :model_year, :discard_month => true %>

也无济于事。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails date simple-form form-for


    【解决方案1】:

    select_year 是一个帮助器,可以生成带有选项的全选标签。由于您使用的是 form_for 而不是 form_tag,因此您需要使用可以在表单构建器对象上调用的帮助器。

    <%= f.select :model_year, (Time.zone.now.year - 100)..(Time.zone.now.year + 1) %>
    

    参考:http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-select_year

    【讨论】:

    • nil:NilClass 的未定义方法 `-' 提取的源代码(第 20 行附近):17:18:
      19:
      20: 21:
      22: 23:
    • 我的 model_year 属性是一个日期。 t.date "model_year" 不确定该错误可能意味着什么
    • 这意味着您的model_yearnil,或者可能整个对象是nil。当你创建一个新对象时,我们需要一些不同的东西。
    • 其实我误解了你的问题。请检查我的更新答案。
    • 由于按时间降序选择年份通常更有意义,这对某人可能会派上用场:(Time.now.year).downto(Time.now.year - 100).to_a
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签