2013-04-28 88 views
-2

我在這個類的其他方法中訪問變量時遇到問題。這是我的例子:紅寶石。變量權限

class CustomersController < ApplicationController 
def login 
    if params[:login].present? && params[:password].present? 
    **@cust_model** = Customers.new 
    redirect_to(:action => 'client_dashboard') 
    end 
end 
def client_dashboard 
    @cust_dashboard = **@cust_model**.dashboard(1) 
end 
end 

我的錯誤是:未定義的方法儀表板

+0

您的代碼中有語法錯誤。 '** @ cust_model **'應該可能是'@ cust_model' – tessi 2013-04-28 08:37:53

+0

我想,他試圖用'code'語法中的markdown在不知不覺中將其加粗。 @PhilippTessenow – kiddorails 2013-04-28 08:39:52

+0

是的...... @ cust_model應該是粗體的) – 2013-04-28 08:40:47

回答

1

login重定向後,@cust_model自然會nilclient_dashboard行動。它不能從這樣login行動繼承,這就是爲什麼dashboard未定義爲Customer

既然你有@cust_model = Customer.new,你就可以充分利用@cust_dashboard = Customer.new.dashboard(1),如果這是你爲了什麼(根據你定的代碼)。

乾杯。

+0

那麼,總之,重定向後我再次創建類的實例? – 2013-04-28 08:51:40

+1

在這種情況下,是的。考慮Rails遵循的CRUD操作的RESTful結構。 'new'動作實例化一個對象,在從那裏觸發POST動作之後,它會到達'create'動作。即使在那裏,對象再次被實例化,然後被保存。 'edit' - >'update'轉換也是如此,但是由於對象已經存在,所以update和exit需要一個id來標識該對象,而不是實例化一個新對象。希望,它清除。 :) – kiddorails 2013-04-28 08:54:52

+0

....謝謝! – 2013-04-28 08:56:16