0

我正在使用 Ruby 2.0.0 和 Rails 4。

我正在尝试访问我在下面创建的类并在视图中遍历它。我的控制器中的 puts 行正常工作并输出数据,所以我知道它已正确设置。

但是,当我尝试在视图中打印项目时,会出现以下错误:

Actions#list undefined method `each' for nil:NilClass 中的 NoMethodError

所以很明显我没有正确地瞄准班级。我应该怎么做?我已经阅读了几个不同的问题/教程,但没有成功实施。

遵循马特里克的(进一步)说明后,我的代码现在如下所示:

模型:

class ListItem < ActiveRecord::Base
attr_accessor :value, :name, :type, :details, :available, :date, :id
#This calls and API which contains JSON data I am trying to display
def self.mylist
    mylist = folder_list('sub', 'tld', $myAuthID, path='/')
end

end

控制器:

class ListItemsController < ApplicationController
def new
    @list_item = ListItem.new
end

def index
    @list_item = ListItems.mylist
end
end

看法:

<%= @list_items. each do |item| %>
<%= item.name %>
<% end %>
4

2 回答 2

1

我想你不检查 mvc 模式?:)

你不能迭代你的类,你可以迭代你的类的对象

# app/models/list_item.rb
class ListItem < ActiveRecord::Base
  attr_accessor :value, :name, :type, :details, :available, :date, :id

  # Update
  def self.mylist
    # your api call
  end

end

# app/controllers/list_items_controller.rb
class ListItemsController < ApplicationController

  def new
    @list_item = ListItem.new
  end

  # Update
  def index
   @list_items = ListItem.mylist
  end

end

# app/views/list_items/new
<%= form_for @list_item do |f| %>
  <% # your form fields %>
<% end %>

# app/views/list_items/index
<%= @list_items. each do |item| %>
  <%= item.name %>
<% end %>

有关此基础知识的更多信息:http: //guides.rubyonrails.org/getting_started.html

你想用你的列表方法做什么?

更新:

我更新了控制器的模型和索引操作。

于 2013-08-02T17:54:04.857 回答
0

@newList 包含一个新的 ListItem 实例。所以你不能.each在上面做这个方法。

如果你想要 @newList 中的几个对象,你需要做

@newList = ListItem.all 

在控制器方法中(最好把它放在def index方法中而不是def new

如果您只想访问单个对象,那么最好忘记每个循环并执行...

<td><%= @newList.name %></td>
于 2013-08-02T16:30:53.953 回答