2011-08-01 17 views
0

我在我的控制器中設置了一個變量,但由於某種原因沒有設置。我嘗試了兩種方法。RoR,將變量傳遞到視圖中給出一個空對象

def update 
# @available_cars = Car_info.where("user_id = ?", session[:user_id]) 
    @available_cars = Car_info.find_by_user_id(session[:user_id]) 
    end 

在我看來,我這樣做。

<% @available_cars.each do |car| %> 
<%= car.name %> 
<% end %> 

我打算做的是填充@available_cars成一個下拉列表,但我甚至不能讓他們打印。我知道會話[:user_id]已設置,因爲我打印並在其他地方訪問它。

我得到這個錯誤... 預計d:/RailsProjects/mileage/app/models/car_info.rb在我的控制器 應用程序/控制器/ active_car_controller.rb定義Car_info

:6:`更新'

任何幫助,將不勝感激。新的RoR。

+2

將這個** Car_info.find_by_user_id(session [:user_id])**更改爲** Car_info.find_by_user_id!(session [:user_id])**並查看它給您帶來的錯誤。此外,你**不應該**使用下劃線命名類。 –

+0

你確定你在正確的控制器操作中這麼做嗎?更新通常是與相應的「編輯」GET視圖關聯的PUT操作。也許你更願意在'編輯'方法中做到這一點? – ipd

+0

@MauricioLinhares感謝您的意見。 Car_info是使用內置腳手架自動創建的模型的名稱。這可能是爲什麼我得到以下錯誤? – Xaxum

回答

1

您需要查詢更改爲:

@available_cars = Car_info.find_all_by_user_id(session[:user_id]) 

find_all部分將讓你所有的記錄,而只find讓你第一。寫這另一種方法是:

@available_cars = Car_info.where("user_id = ?", session[:user_id]) 

理想情況下,你希望你的類被稱爲CarInfo,不Car_info

+0

car_info是它使用腳手架創建的模型。 – Xaxum

+0

我修正了拼寫錯誤之後的根本問題是我正在使用Car_info而不是CarInfo,正如這裏所述。我沒有意識到它與模型不一樣。感謝大家的幫助。我的代碼中真的有兩個錯誤。這兩個答案都是正確的。對不起,我不能將它們標記爲這樣。我很低,我甚至不能標記其他有用的。 – Xaxum

3

我看到你的控制器方法被命名爲'udpate'而不是'update' - 這可能是你的問題嗎?

+0

這是問題現在我得到一個新的錯誤... – Xaxum

+0

請參閱上面仍然不能訪問變量,但它不是一個空錯誤。 – Xaxum