2011-08-01 4 views
0

컨트롤러에 변수를 설정하고 있는데 어떤 이유로 설정되지 않습니다. 나는 그것을 두 가지 방법으로 시도했다.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]이 인쇄되고 다른 곳에 액세스하기 때문에 세션이 설정되었음을 압니다. /RailsProjects/mileage/app/models/car_info.rb 내 컨트롤러 응용 프로그램/컨트롤러/active_car_controller.rb에

Car_info

을 정의 할 수 :

나는이 오류가 ... 예상 D 얻을 6 :`에 업데이트 '

도움이 될 것입니다. RoR을 처음 사용합니다.

+2

** ** Car_info.find_by_user_id (세션 [: user_id]) ** ** ** Car_info.find_by_user_id! (세션 [: user_id]) **로 변경하고 어떤 오류가 발생했는지 확인하십시오. 또한 ** ** 클래스에 밑줄을 사용해서는 안됩니다. –

+0

올바른 컨트롤러 작업에서이 작업을 수행하고 있습니까? 업데이트는 일반적으로 해당 '편집'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를 사용했다는 사실이었습니다. 나는 그것이 모델과 동일하지 않다는 것을 깨닫지 못했습니다. 도와 주신 모든 분들께 감사드립니다. 내 코드에는 실제로 두 가지 오류가있었습니다. 이 두 가지 대답은 모두 정확했습니다. 죄송합니다. 나는 그 (것)들을 그런 것으로 표시 할 수 없습니다. 나는 너무 낮아 나는 다른 도움을 표시 할조차 수 없다. – Xaxum

3

컨트롤러 메서드의 이름이 '업데이트'대신 'udpate'로 표시됩니다. 문제가 될 수 있습니까? find는 당신에게 첫 번째를 얻을 수있는 반면, 당신에게 모든 기록을 얻을 것이다

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

find_all 부분 :

+0

이제 새로운 오류가 발생했습니다 ... – Xaxum

+0

See 위의 경우 여전히 변수에 액세스 할 수 없지만 null 오류는 아닙니다. – Xaxum

관련 문제