2013-08-02 49 views
0

我使用的是Ruby 2.0.0和Rails 4.在視圖中定位一個類

我試圖訪問我在下面創建的類並在視圖中遍歷它。我的控制器中的puts線正常工作並輸出數據,所以我知道它正確設置。

然而,當我嘗試打印在視圖中的項目它給了我下面的錯誤:在操作

NoMethodError#列表 未定義的方法`每次」的零: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 %> 

回答

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

而且你想與您的清單,方法是什麼?

UPDATE:

我更新了模型和控制器的索引行爲。

+0

mylist = folder_list('subdomain','tld',$ myAuthID,path ='/') 調用一個我必須解析數據的API。這是我在列表方法中所做的。我能夠將這些數據輸出到控制檯找到,但我無法將其獲取到視圖中。 – Jerrod

+0

好的。將您的方法更改爲def self.mylist ...在模型中結束。並且將索引操作中的ListItem.all調用更改爲ListItem。mylist – Mattherick

+0

更新了我的答案。 – Mattherick

0

@ newList包含一個新的ListItem實例。所以你不能對它做方法.each

如果你想在@newList幾個對象你需要做的

@newList = ListItem.all 

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

如果你想只是訪問單個對象,那麼你會更好忘記每個循環,並做...

<td><%= @newList.name %></td> 
+0

我將它改爲.all和def index,仍然得到相同的錯誤。 – Jerrod

相關問題