我正在開發一個應用程序,用戶的「項目」可以跟隨數據庫中的「工廠」對象。當我在我的應用程序中爲任意數量的工廠對象點擊「Follow」時,我在「Prelationships」控制器(將用戶項目連接到固定「工廠」對象的工廠關係)中創建操作的錯誤如下:Rails「follow」關係控制器問題
「你有一個零對象時,你沒想到吧! 你可能期望陣列的一個實例。 在評估爲零時發生錯誤。[]」
我意識到這是一個大問題,是的,我幾乎是一個新手。所有的遷移應該沒問題。我感謝任何幫助 - 即使這意味着提出一個全新的解決方案。
這裏是我的控制器,被稱爲 「Prelationships」,看起來像:
class PrelationshipsController < ApplicationController
def create
@plant = Plant.find(params[:prelationship][:pfollowed_id])
@project.follow!(@plant)
respond_to do |format|
format.html { redirect_to @project }
format.js
end
end
end
而我的 「Prelationships」 模式:
class Prelationship < ActiveRecord::Base
attr_accessible :pfollowed_id
belongs_to :pfollower, :class_name => "Project"
belongs_to :pfollowed, :class_name => "Plant"
validates :pfollower_id, :presence => true
validates :pfollowed_id, :presence => true
end
而我的 「項目」 模式:
class Project < ActiveRecord::Base
attr_accessible :title, :address, :latitude, :longitude, :state
belongs_to :user
has_many :prelationships, :foreign_key => "pfollower_id",
:dependent => :destroy
has_many :pfollowing, :through => :prelationships, :source => :pfollowed
def pfollowing?(pfollowed)
prelationships.find_by_pfollowed_id(pfollowed)
end
def pfollow!(pfollowed)
prelationships.create!(:pfollowed_id => pfollowed.id)
end
end
而我的「植物」模型:
class Plant < ActiveRecord::Base
has_many :prelationships, :foreign_key => "pfollowed_id",
:class_name => "Prelationship"
has_many :pfollowers, :through => :reverse_prelationships,
:source => :pfollower
end
最後,我的 「_plants_form」 部分的觀點:
<%= form_for @project.prelationships.build(:pfollowed_id =>
@project_id) do |f| %>
<%= collection_select(:prelationships, :pfollowed_id, Plant.all, :id, :name,
options = {:prompt => "Select your plants"}, :class => "listselect") %>
<div class="actions"><%= f.submit "Pfollow" %></div>
<% end %>
下面是從我日誌中的錯誤:
Started POST "/prelationships" for 127.0.0.1 at 2011-11-20 23:31:57 +0100
Processing by PrelationshipsController#create as HTML
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"NKqa1f0M2yPLQDHbRLnxl3SiwBeTus/1q1hpZjD7hgY=",
"prelationships"=>{"pfollowed_id"=>"5"}, "commit"=>"Pfollow"}
Completed 500 Internal Server Error in 14ms
NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]):
app/controllers/prelationships_controller.rb:4:in `create'
Rendered /Users/mmelone12/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-
3.0.9/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.4ms)
Rendered /Users/mmelone12/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-
3.0.9/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb
(30.6ms)
Rendered /Users/mmelone12/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-
3.0.9/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within
rescues/layout (37.1ms)
可以粘貼錯誤的回溯會發生什麼? – ShiningRay
請讓我知道你是否需要其他任何東西來幫助破解這個 –
「@ project」在哪裏被實例化? – Swanand