我在 SitesController#index undefined method `subdomain' for nil:NilClass 中得到 NoMethodError
我有一个 Accounts 表,其中有一个“子域”字段和一个 Site 模型,它是 Account Model 的子类,即:
class Site < Account
end
create_table "accounts", :force => true do |t|
t.string "subdomain"
t.integer "user_id"
结尾
并且在 applications_controller 中定义了一个 current_account 方法,如下所示
def current_account
if !is_root_domain?
current_account = Account.find_by_subdomain(request.subdomains.first)
if current_account.nil?
redirect_to root_url(:account => false, :alert => "Unknown Account/subdomain")
end
else
current_account = nil
end
return current_account
结尾
哪个调用 is_root_domain?下面的方法:
def is_root_domain?
result = (request.subdomains.first.present? && request.subdomains.first != "www") ? false : true
结尾
我还将 current_account 方法更改为此但得到了同样的错误:
def current_account
current_account = Account.find_by_subdomain(request.subdomains.first)
end
在上述任何一种情况下,我都会在 SitesController#index 上得到 nil:NilClass 错误的未定义方法“子域”。在尝试访问 url 时如下所示:
class SitesController < ApplicationController
def index
@site = Site.find_by_subdomain(current_account.subdomain)
end
def opps
@site = Site.find_by_subdomain(current_account.subdomain)
end
结尾
我已经尝试了各种我所知道的与无方法错误作斗争的技巧,比如添加“attr_ccessible”和一个初始化方法,但似乎没有任何效果。我还将帐户表字段从“子域”更改为“名称”,但没有成功。任何指南将不胜感激。