我正在使用Ruby 2.0.0和Rails 4。
我正在尝试访问下面创建的类,并在View中迭代它。我的控制器中的puts行正常工作并输出数据,因此我知道它已正确设置。
但是,当我尝试在View中打印项目时,它会出现以下错误:
动作#列表中的NoMethodError 未定义的方法`each'代表nil:NilClass
所以显然我没有正确地定位课程。我该怎么做?我已经阅读了几个不同的问题/教程,但实施起来没有运气。
按照Mattherick的(进一步)说明后,我的代码现在看起来像这样:
型号:
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 %>
答案 0 :(得分: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
你想用list-method做什么?
<强>更新强>
我更新了模型和控制器的索引操作。
答案 1 :(得分:0)
@newList包含一个新的ListItem实例。所以你不能在它上面做.each
方法。
如果你想在@newList中使用多个对象,你需要做
@newList = ListItem.all
在控制器方法中(最好将其放在def index
方法而不是def new
)
如果你想只访问单个对象,那么你最好忘记每个循环并做...
<td><%= @newList.name %></td>