0

我刚刚为我的电影表构建了一个名为 year_id 的迁移当我创建两个新的年份,2012 年和 2013 年,然后我添加下拉列表来选择年份,我得到了这个:

如何让我的下拉选择显示实际年份(2012 年或 2013 年)而不是 #< Year:0x000 等...

这是我的模型:

class Year < ActiveRecord::Base
    attr_accessible :year 
    has_many :movies
end 

这是我的表格:

<%= semantic_form_for @movie, :html => { :multipart => true } do |f| %> 
  <% if @movie.errors.any? %> 
    <div id="error_explanation"> 
      <h2>
        <%= pluralize(@movie.errors.count, "error") %> prohibited this movie from being saved:
      </h2> 
      <ul> 
        <% @movie.errors.full_messages.each do |msg| %> 
          <li><%= msg %></li> 
        <% end %> 
      </ul>
    </div> 
  <% end %> 
  <div class="field"> <%=h f.input :year, :include_blank => false %> </div><br />
4

1 回答 1

1

如果没有看到表单的完整代码,很难准确地回答您的问题。但是,正在发生的是您的实际实例Year作为选项文本传递。如果您to_s从控制台调用,您可能会看到类似的输出

Year.first.to_s
# => "#<Year:0x00000101bcea10>"

查看http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_selectoptions_for_select文档,了解如何正确定义选择元素的选项。

看起来您也可以使用collection_select表单助手来省去定义选项数组的麻烦。它看起来像这样

<%= f.collection_select :year_id, Year.all, :id, :year %>

最后一个选项:year是用于选项文本的方法,因此您可以将其更改为对您的模型有意义的内容。

于 2013-05-07T20:05:36.517 回答