Rails - 我无法读取数组的内容

时间:2015-12-28 14:22:08

标签: ruby-on-rails arrays

我在尝试读取rails数组的内容时遇到问题。 (ruby 2.x,rails 4.x)

我有一个搜索表单,其中一个项目是选择倍数。该数组存储在名为category的文本字段中。我正在使用

获取数组
 <%= f.select :category,
                       options_for_select(@categories.sort),
                       {:include_blank => true},
                       {:multiple => true, :size =>10}  %>

如果我做了&lt;%= @ search.inspect%&gt;我得到像

这样的东西
  

搜索ID:675,document_title:“”,摘要:“”,所有者:“[\”\“]”,类别:        “[\”\“,\”Apples \“,\”Calendar \“,\”Forms \“]”,file_name:“”,created_at:       “2015-12-28 13:57:45”,updated_at:“2015-12-28 13:57:45”,doc_to_email:nil

我看到类别字段有一个数组,其中包含我选择的三个项目。

如果我这样做&lt;%= @ search.category%&gt;我明白了

  

[“”,“苹果”,“日历”,“表格”]

到目前为止,在我看来阵列就在那里。

然而,

<%= @search.category[0..8] %>

结果

  

[“”,“App

<%= @search.category.first %>
  

[

<%= @search.category.last %> 
  

这不是我所期待的

<% @search.category.each do |cat_name| %>"
     <%=  cat_name %>
<% end %>

导致错误

  

显示   C:/Users/cmendla/RubymineProjects/technical_library/app/views/searches/show.html.erb   第85行引出的地方:

     

未定义方法`each'代表“[\”\“,\”Apples \“,\”Calendar \“,   \“Forms \”]“:String Rails.root:   C:/用户/ cmendla / RubymineProjects / TD

     

应用程序跟踪|框架跟踪|完整追踪   应用程序/视图/搜索/ show.html.erb:85:在   `_app_views_searches_show_html_erb ___ 938985047_80352240'

在尝试读取数组内容时,我做错了什么?

1 个答案:

答案 0 :(得分:2)

你的模特&#39; category是一个字符串,而不是数组。

要在文本字段中存储数组 - 添加

serialize :category, JSON

进入模型。