2011-08-01 10 views
0

コントローラに変数を設定していますが、なんらかの理由で設定されていません。私は2つの方法でそれを試しました。私の見解ではRoR、ビューに変数を渡すとnullオブジェクトが返される

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このエラーが出る:6:私のコントローラ アプリ/コントローラ/ active_car_controller.rbにCar_info

を定義する/RailsProjects/mileage/app/models/car_info.rb `での更新 '

ご協力いただければ幸いです。 RoRを初めて使用しました。

+2

この** Car_info.find_by_user_id(セッション[:user_id])**を** Car_info.find_by_user_id!(セッション[:user_id])**に変更し、どのようなエラーが表示されるかを確認してください。また、クラス名にはアンダースコアを使用するべきではありません。 –

+0

正しいコントローラアクションでこれを実行していますか? updateは通常、対応する 'edit' GETビューに関連付けられたPUTアクションです。おそらくあなたは '編集'方法でこれを行うように指示しますか? – ipd

+0

@MauricioLinhares入力いただきありがとうございます。 Car_infoは、組み込みのスキャフォールディングを使用して自動的に作成されたモデルの名前です。これが私に次のエラーをもたらす理由かもしれませんか? – Xaxum

答えて

1

あなたがにあなたのクエリを変更する必要があります。これを書くための別の方法は次のとおりです。理想的

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

、あなたがいないCar_info、あなたのクラスはCarInfo呼ばれるようにしたいです。

+0

car_infoは足場を使って作成したモデルでした。 – Xaxum

+0

私がスペルミスを修正した後の根本的な問題は、ここで述べたようにCarInfoの代わりにCar_infoを使用していたという事実でした。私はそれがモデルと同じではなかったことを認識しませんでした。助けをいただき、ありがとうございました。私のコードには本当に2つのエラーがありました。これらの答えはどちらも正しいものでした。申し訳ありませんが、そのようにマークすることはできません。私はとても低く、私は他の人に役立つことをマークすることさえできません。 – Xaxum

3

あなたのコントローラのメソッドは、 'update'の代わりに 'udpate'という名前が付けられています。これはあなたの問題でしょうか? findだけあなたの最初を取得するのに対し、あなたのすべてのレコードを取得します

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

find_all一部:

+0

これで問題が発生しました。新しいエラーが発生しました... – Xaxum

+0

上記の場合でも変数にはアクセスできませんが、nullエラーではありません。 – Xaxum

関連する問題