Ruby on rails Rails 3日期\u仅选择年份
我在Rails 3应用程序中有一个表单,我想在一个方法中创建一个选择标记,用于年份:grad_year。我使用date_select并添加:discard_month和:discard_day使一切正常工作和存储。但是,当我渲染@profile.grad_year时,我会得到月和日的值。所以我想知道如何只存储和渲染@profile.grad_year的年份 表格如下:Ruby on rails Rails 3日期\u仅选择年份,ruby-on-rails,ruby-on-rails-3,select,Ruby On Rails,Ruby On Rails 3,Select,我在Rails 3应用程序中有一个表单,我想在一个方法中创建一个选择标记,用于年份:grad_year。我使用date_select并添加:discard_month和:discard_day使一切正常工作和存储。但是,当我渲染@profile.grad_year时,我会得到月和日的值。所以我想知道如何只存储和渲染@profile.grad_year的年份 表格如下: <%= f.date_select :grad_year, {:start_year => Time.now.yea
<%= 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 %>
Rails有一个select\u year助手:
因此,您的代码应该如下所示:
f.select_year(Date.today, :start_year => Time.now.year, :end_year => Time.now.year - 95, :field_name => 'grad_year')
根据@alex_Peatie的回答,综合以上所有内容,我得出以下结论:
<%= select_year Date.today, :start_year => Time.now.year, :end_year => Time.now.year - 95, :field_name => :grad_year, :prefix => :profile %>
和OP的问题一样,我的案例是在form_for block中完成的,所以f.select_year抛出了一个异常。但是,如果您只使用documented:field\u name选项,那么标记将具有id date\u grad\u year和name date[grad\u year],这不是Rails所期望的。使用仅在API最顶端记录的:前缀选项将日期更改为概要文件
因此,这比@%$^*&html_选项散列要好,尽管使用rails已有5年了,但如果不尝试5次,我似乎无法正确地使用它:-
哦,Rails,我是多么爱你,同时我也很高兴Stack Overflow能够帮助我们了解你令人愉快的特质 这个选择年份的功能完全不正常 下面是最后一个有效的方法:
<%= form_for(@user) do |f| %>
<%= select_year current_user.birth_year, { :prompt => "Year",
:start_year => Time.zone.now.year - 13,
:end_year => Time.zone.now.year - 80,
:field_name => :birth_year,
:prefix => :user },
class:"form-control" %>
<% ... %>
在rails中可能会是这样:
<%= f.select_year :birth_year, { :prompt => "Year",
:start_year => Time.zone.now.year - 13,
:end_year => Time.zone.now.year - 80},
class:"form-control" %>
谢谢,我尝试了类似的方法,但出现了一个错误:未定义的方法select_year for Try排除了f。开始时。您可以在创建操作中设置它:params[:profile][:grad_year]=params[:grad_year]select_year接受html_选项哈希作为第三个参数。您可以传入:name和:id值以匹配表单的其余部分。这正是我想要的。谢谢。解决此问题的更一般的方法是选择\u year f.object.field\u name…:prefix=>f.object\u名称严重。。。什么该死的错误。。。叹气
<%= f.select_year :birth_year, { :prompt => "Year",
:start_year => Time.zone.now.year - 13,
:end_year => Time.zone.now.year - 80},
class:"form-control" %>