2017-12-09 2 views
-1

우분투를 사용하여 레일즈 어플리케이션을 연구 중입니다. paperclip gem과 Imagemagick을 사용하여 웹 사이트에 이미지를 추가하려고 시도 할 때까지는 아무 문제가 없었습니다.루비 온 레일즈 v5.1 및 종이 클립

필자는 모델, 컨트롤러 및 아마 뷰를 포함하여 필요에 따라 코드를 구현했으며 작성/제출 버튼을 클릭하면 양식의 모든 필드가 이미지를 포함하여 데이터베이스에서 허용되고 업데이트됩니다. 그러나 웹 사이트에 다음과 같은 오류 제공 :

undefined method `image' for nil:NilClass 

을이 오류주는 라인 :

<%= image_tag @current_user.image.url(:medium) %> 

나는 이미 데이터베이스를 삭제하고 새 마이그레이션 작업을하려고 노력을하지만, 새 사용자를 만들려고하면 오류가 계속 발생합니다.

+0

오류는'@ current_user'가 nil이고 이미지 메소드 (또는 속성)가 없다는 것을 알 수 있습니다.'@ current_user'의 값을 확인할 수 있습니까? –

+0

# ]> – donkihot5

+0

이것은 양식을 제출할 때 데이터베이스 항목입니다. – donkihot5

답변

0

의견에서 언급했듯이 @current_userActiveRecord::Relation이지만 image에 액세스하려면 레코드가 필요합니다. 당신 만의 관계에서 하나 개의 항목을 가지고있는 것처럼 보이는 때문에, 당신은 first 방법 첫 번째 (만) 기록에 액세스 할 수 있습니다

<%= image_tag @current_user.first.image.url(:medium) %> 

그러나, 더 나은 방법은 컨트롤러 또는 도우미에서이 작업을 수행하는 것 처음에는 @current_user으로 설정됩니다. @current_user을 설정하는 식에 .first을 간단하게 추가 할 수 있습니다.

하나의 경고에 .first을 추가하면 관계에서 첫 번째 레코드가 항상 선택됩니다. 조회가 여러 레코드를 리턴하면 모든 레코드는 첫 x 째 레코드가 +시 될 것으로 예상합니다. 쿼리가 id와 같은 고유 한 것을 검색하면 일반적으로 문제가되지 않습니다.

+0

어떻게 하나의 사용자를 의미하는지, 이후 db를 놓아야했기 때문에, 한 사용자가 하나의 이미지를 가질 것이라는 것을 의미한다면, 대답은 작동 할 수 있습니다. – donkihot5

+0

'@ current_user'를 계산하는 데 사용하는 것은 하나의 사용자 레코드 만 반환한다는 것을 의미합니다. 'first' 메쏘드로 그 레코드를 선택할 수 있습니다. 여기서 진짜 문제는 당신이보기와 함께'@ current_user'를 계산하기 위해 사용하는 코드에 있습니다. 질문에 해당 코드를 게시 할 수 있습니다. –

+0

나는 결국 작동하게되었지만, 내가 가진 새로운 문제는 이미지의 크기와 관련이있다. 모델에서 변경하더라도 꺼져있다. 이제는이 문제를 해결해야합니다.시간과 도움을 주신 모든 분들께 감사 드리며, 고맙습니다. 결국 문제는 제가 사용했던 변수에있었습니다. – donkihot5