當我試圖告訴水豚visit ('/')
時,我有以下失敗的測試。水豚未定義方法`標記?'爲零:NilClass
1) Credits when user is non-enabled show user credits available at the top.
Failure/Error: visit ('/')
NoMethodError:
undefined method `tag?' for nil:NilClass
# ./app/controllers/application_controller.rb:16:in `set_current_tag'
# ./spec/requests/credits_spec.rb:12:in `block (3 levels) in <top (required)>'
在ApplicationController
的代碼看起來像這樣
def set_current_site
current_host = request.host
@site = Site.where(domain: current_host).first
@site = Site.where(domain: 'mysiste.com').first unless @site.present?
end
def set_current_tag
if @site.tag? && Dvd.tagged_with(@site.tag, wild: true, any: true).any?
@site.tag = @site.tag
elsif params[:tag] && Dvd.tagged_with(params[:tag], wild: true, any: true).any?
@site.tag = params[:tag]
else
@site.tag = ''
end
end
我有點失去了這裏如何解決這個,什麼將是對這一理想的解決方案。我是否應該將實例變量的設計更改爲方法,並將SiteGirl用於Site?
網站模型非常簡單。
class Site < ActiveRecord::Base
attr_accessible :domain, :content, :program, :tag, :locale, :parent, :title, :landing
validates_presence_of :domain
validates_uniqueness_of :domain
end
,工廠是
FactoryGirl.define do
factory :site do
domain "dvdstore.com"
title "DVD Store"
program "premium"
content "movies"
end
end
粘貼您的網站模型 – Trace
@Trace請參閱Site model的更新問題。 – Martin
你沒有self.tag?方法在你的網站模型....你在哪裏得到這個 – Trace