Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3日期\u仅选择年份_Ruby On Rails_Ruby On Rails 3_Select - Fatal编程技术网

Ruby on rails Rails 3日期\u仅选择年份

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

我在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.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" %>