2009-12-18 2 views
0

< % = @ user.address1 %>이 (가) 뷰에 표시되지 않는 이유를 디버깅하려고했습니다. 내가 디버그 (@user)를 사용하여 모델을 디버깅디버그에서 레일스 변수 유형 이해하기

t.string "address1" 
t.string "address2" 
t.string "city" 
t.string "state" 
t.string "zip" 
t.string "phone" 

, 내가 가진 : 연관된 열로, 문자열로 설정했다

address1: 123 Main St. 
city: Santa Barbara 
address2: "" 
zip: "93101" 
state: CA 
DB를에 정보를 입력하는

관련보기 :

<tr> 
     <td width="300">Address: </td> 
     <td><%= u.text_field :address1 %><br></td> 
    </tr> 
    <tr> 
     <td width="300">Address2: </td> 
     <td><%= u.text_field :address2 %><br></td> 
    </tr> 
    <tr> 
     <td>City:</td> 
     <td><%= u.text_field :city %></td> 
    </tr> 
    <tr> 
     <td>State:</td> 
     <td><%= u.text_field :state %></td> 
    </tr> 
    <tr> 
     <td>Zip Code:</td> 
     <td><%= u.text_field :zip %></td> 
    </tr> 
    <tr> 
     <td>Phone:</td> 
     <td><%= u.text_field :phone %></td> 
    </tr> 

나는 <퍼센트 = @ user.address1.to_s %>하지만 디버그 출력에서 ​​나는 열이 이미 캐릭터라고 생각 스키마와 함께 사용하여 문제를 해결했습니다. 우편 번호가 문자열을 지정하는 인용 부호를 포함하는 반면 address1은 인용 부호를 사용하지 않았습니다.

그럼 왜 처음에는 < % [email protected] %>를 문자열로 변환하지 않고 사용할 수 없었습니까? 어떤 종류의 변수가 123 main st입니다. 인용하지 않고?

답변

1

도우미는 값이 문자열이어야하는 경우에만 따옴표를 사용합니다. zip을 따옴표로 묶어서 숫자가 아닌 것을 알고 있으므로 ""address2입니다. 따라서 그것이 0이 아님을 알고 있습니다. 나머지는 명확하게 문자열입니다. 나는이 행동을 좋아하지 않지만 이것이 어떻게 작동 하는지를 보여줍니다.

@user.address1이 이미 문자열 이었기 때문에 to_s을 추가 할 때까지 왜 나타나지 않았습니까? 나는 잘 모르겠다. 내가 볼 수있는 것에서 볼 때 그것이 있어야하는 것처럼 보입니다. 아마 그것을 표시하는보기에서 일부 코드를 게시 할 수 있습니까? <%=h @user.address1 %>을 시도해보십시오. 페이지의 HTML 소스를 볼 수 있다면 거기에 무엇이 있습니까?

+0

이제 작동합니다. 무슨 일이 있었는지 전혀 모르지만 여러 번 서버를 다시 시작하고 DB를 다시 만들었습니다. 흠. 디버그는 명확한 설명이 필요한 필드 주위에 ""있는 정보를 주셔서 감사합니다. 다소 호기심이 있습니다. – Kevin