我在SitesController#指數 未定義的方法`子域名越來越NoMethodError的零:NilClassNoMethodError,未定義的方法'名稱」的零:NilClass -rails 3
我有,有一個‘子域’的賬表場與Site模型是帳戶模型是的一個子類:
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
末
我也chnaged的current_account方法這一點,但得到了同樣的錯誤:
def current_account
current_account = Account.find_by_subdomain(request.subdomains.first)
end
在上述任何情況下,我得到的未定義的方法`子域對於SitesController#index中的nil:NilClass錯誤。這顯示在下面試圖訪問的網址:
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」和initiliaze方法,但沒有似乎工作。我還將帳戶表字段從「子域」更改爲「名稱」,但沒有成功。任何指導將不勝感激。
@bhouse謝謝你的時間,nomethod錯誤消失了,所以你的代碼真的很有幫助。您是否知道爲什麼它會從redirect_to root_url中吐出錯誤消息,如下所示:已啓動GET「/?alert = Unknown + Account%2Fsubdomain」for 127.0.0.1 at 2月08日15 :54:05 +0000 2011 將SitesController#index處理爲HTML 參數:{「alert」=>「未知帳戶/子域」} 重定向到http://lvh.me:3000/?alert =未知+帳戶%2Fsubdomain 已完成302在0ms中找到 – brg 2011-03-08 16:03:14
@brg它將警報添加爲查詢字符串,因爲 - 如果您的代碼是按照上面的代碼執行的,則您將它傳遞給root_url方法。嘗試將其改爲:'redirect_to root_url(:account => false),:alert =>「未知帳戶/子域名」'。正如你所看到的那樣,添加:account => false作爲查詢字符串,我認爲它是你想要的,但將alert傳遞給redirect_to。 – 2011-03-08 16:13:06
@luke_randall,謝謝我現在就改變它。感謝您的停止和幫助。 – brg 2011-03-08 16:15:03