문제

이 코드 블록이 있습니다.

users = Array.new
users << User.find(:all, :conditions => ["email like ?", "%foo%"])
users << User.find(:all, :conditions => ["name like ?", "%bar%"])
users.flatten!
users.uniq!
puts users.to_json :include => [:licenses]

스크립트/콘솔을 사용하여 실행하면 내가 생각해야 할 것을 정확하게 반환합니다. JSON은 내가 찾아서 평평하고 고유 한 사용자의 배열을 표현합니다. 그러나 동일한 코드 라인을 실행하여 search_for_users 방법,이 오류가 발생합니다

ControlLername#search_for_users의 TypeError
잘못된 인수 유형 해시 (예상 데이터)

그리고 참조 된 줄은 .to_json 호출과 함께 라인입니다.

코드가 동일하기 때문에 저를 당황스럽게합니다. 유일한 차이점은 콘솔에서 실행할 때 조건을 수동으로 입력하지만 내 방법에서는 쿼리를 가져오고 있다는 것입니다. params[:query]. 그러나 방금 쿼리 하드 코딩을 시도하고 같은 결과를 얻었으므로 문제가 문제라고 생각하지 않습니다. 내가 제거하면 :include, 오류가 보이지 않지만 원하는 데이터도 얻지 못합니다.

누구든지 문제가 무엇인지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

컨트롤러에 포함 된 경우 .to_json이 실패 할 수있는 플러그인과 보석이 몇 개 있습니다. 나는 트위터 보석이 그들 중 하나라고 믿는다 (이 시간에 문제가 발생했다).

이 컨트롤러에 [무엇이든]를 포함 시키거나[무엇이든 필요 "가 있습니까?

그렇지 않은 경우, 문제 해결 등을 위해 사용중인 플러그인을 임시로 제거하는 것이 좋습니다.

마지막으로, 전체 컨트롤러 동작을 간단히 대체하면 다음과 같은 경우 : %W (1 2 3 4 5) .to_json

실패한 것을 고정시키는 데 도움이 될 것입니다.

다른 팁

테스트 또는 콘솔의 코드가 프로덕션 환경과 다르게 작동 할 때마다 (추측입니다 ... 개발 모드에서 사이트를 실행하고있을 수 있음)로드 주문 문제가 필요합니다. 생산 환경에서 모든 모델과 컨트롤러는 사전로드되며 다른 환경에서는 필요할 때 게으르게로드됩니다. 콘솔을 시작하십시오 RAILS_ENV=production ./script/console 이런 식으로 오류를 재현 할 수 있는지 확인하십시오. Cscotta가 언급했듯이, .to_json을 방해 할 수있는 몇 가지 보석과 도서관이 있습니다. 먼저 'JSON'이 필요할 때 얻을 수있는 기능을 언급 할 수 있습니다. 나는 개인적으로 몇 가지 문제를 해결했습니다.

도움이 되었기를 바랍니다

Seb

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top