2013-10-27 3 views
0

나는 내 컨트롤러 중 하나에이 before_filter 있습니다배열로 찾아서 일치하지 않는 경우 nil을 반환하는 방법은 무엇입니까?

def valid_people 
    person_ids = params[:project][:person_ids] 
    if person_ids.present?   
    person = current_user.people.where("id IN (?)", person_ids).to_a 
    redirect_to(root_path) unless person 
    end 
end 

4 호선 검사를 person_ids 배열의 모든 ids가 사용자의 people에 포함되어있는 경우.

그러나 그렇지 않은 경우 오류가 발생합니다.

어떻게 4 번 줄을 nil 대신에 가져올 수 있습니까?

도움 주셔서 감사합니다.

+1

~ 16 단어로 얼마나 명백한 코드가 작동하는지 설명하고 있습니다. 그렇다면 실제 문제는 ~ 10에서 묘사하고 있으며, 매우 일반적인 방법으로 말입니다. –

+0

@ Tintin81 : 그렇다면 사람이 무언가를 포함하고 있는지 확인하는 것, 즉 'redirect_to (root_path) person.any가 아닌 한'을 확인하는 것만 큼 – zrl3dx

답변

1

present? 또는 blank?을 확인하십시오. 그것은 또한 빈 배열을 처리합니다

redirect_to(root_path) if person.blank? 

을 Btw는 : 그것은 사람들을위한 배열이 아닌 한 사람을 반환하기 때문에 변수 personpeople로 변경해야합니다.

+0

좋습니다. 고맙습니다. – Tintin81

관련 문제