ArgumentError Nil location provided. Can't build URI. 가 나왔을 때의 대처법 프로프 이미지의 구현

ArgumentError



전에도 몇 번이나 보았던 에러 그 때는 어딘지 모르게 해결할 수 있었지만 이번은 매우 막혀 버렸기 때문에 잊지 않는 사이에 남겨 둔다 원래 ArgumentError란?





직역하면 변수의 에러 Argument=인수라고 하는 것을 이번 처음 알았다(이제 더)



주로 인수의 개수가 맞지 않는 경우라든가 인수의 내용이 하늘이라든지 그럴 때에 나오는 에러인 것 같다



자세한 내용을 보면 Topics의 index 뷰에서 에러 적선의 12행째가 이상해요.



'제공된 장소가 없습니다. URI를 구축할 수 없습니다. 』



원래 무엇을 하고 있어 이런 에러가 나왔는가 하면, 어느 장소에 유저가 등록한 프로필 화상을 표시하고 싶은 코드를 쓰고 있었습니다. 작성한 코드
<% if topic.user.profile_photo == nil %>
  <%= image_tag “icons/profile-icon.png”, class:”profile_photo_mini” %> %>
<% else %>
  <%= image_tag topic.user.profile_photo.url, class:”profile_photo_mini” %>
<% end %>

흔한 간단한 if 문으로 만약 이 주제에 대한 사용자의 프로필 이미지가 nil인 경우 미리 준비되어 있는 테스트 이미지를 표시하지 않는 경우(이 경우 프로필 이미지가 등록되어 있는 경우)는 그 등록하고 있는 이미지를 표시한다고 한 코드입니다.



이 profile_photo 이미지는 사용자 등록시 마스트가 아니기 때문에 당연히 등록하지 않은 사용자도 있습니다. 그래서 if문으로 도망가는 길을 만들었는데 아무래도 이 if문이 생각한 대로 기능하고 있지 않다. 다른 쪽의 기사를 보면, 화상 등록하지 않은 유저를 지우면 해결! ! 같은 것을 썼습니다. 확실히 에러는 없어집니다만, 그것은 자신이 요구하고 있는 내용이 아니기 때문에 다시 사고.



오류 내용으로 돌아가기Nil location provided. Can't build URI.



'제공된 장소가 없습니다. URI를 구축할 수 없습니다. 』――URL인가라고 생각하면 URI인거야 테카 URI는 무엇? 재구성하면 이런 기사를 발견(스시에 비유해서 재미있다). 라든지 생각하고 확인하는 것도 문제 없음. 구체적으로 이미지의 경로를 지정해도 오류 개선하지 않고.



이상한 if문의 쓰는 방법도 잘못되어 있지 않을 것인데-니치도 새치도 가지 않아 멘터에게 상담.

여기에서 해결 방법! !


<% if topic.user.profile_photo == nil %>
 <%= image_tag “icons/profile-icon.png”, class:”profile_photo_mini” %> %>
<% else %>
<%= image_tag topic.user.profile_photo.url, class:”profile_photo_mini” %>
<% end %>

이 첫 번째 줄의 부분

<% if topic.user.profile_photo.blank? %>

로 다시 쓰면 제대로 if문이 작동하게 되었습니다. 요점은 내용이 nil이 아니고 비어 있기 때문에 잘 되지 않았던 것 같습니다. .blank? 로 nil 의 경우와 하늘의 경우 true 가 됩니다. rails c로 내용을 확인하면 표시는 nil이 되어 있는데 왜-! ! 의미 모르겠어! ! 라고 물으면



지금은 깊이 생각하지 않아도 됩니다. 이미지의 경우는 특수한 생각이기 때문에 그렇게 말하는 것이라고 기억하면 괜찮습니다. 라고 일단 설명은 해 주었습니다만 나의 쪽의 이해가 따라잡지 않고 깊은 이야기를 할 수 없었습니다 orzImageUploader의 클래스나 CarrierWave가 관계하고 있는 것 같은 것까지는 알았습니다. 급히 해결했으므로 참고까지 꼭! !

좋은 웹페이지 즐겨찾기