2009-12-18 2 views
0

Я пытался отладить, почему <% = @ user.address1%> не отображался в представлении. Соответствующая колонка была установка в виде строки, как:Общие сведения о типах переменных Rails в отладочном состоянии

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

Когда я отлажена модель с помощью отладки (@user), я получил:

address1: 123 Main St. 
city: Santa Barbara 
address2: "" 
zip: "93101" 
state: CA 

Попутный вид для ввода информации в БД:

<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%> а из отладочных вместе со схемой, я думал, колонна была уже строкой. Я заметил, что, хотя почтовый индекс содержит цитаты вокруг него, обозначающие строку, адрес1 не сделал.

Так почему я не мог изначально использовать <% [email protected]%> без преобразования его в строку? Какая переменная - главная улица 123. без котировок?

ответ

1

debug Вспомогательный использует только кавычки, когда необходимо, чтобы показать значение является строкой. Он ставит котировки вокруг zip, поэтому вы знаете, что это не номер, и "" для address2, чтобы вы знали, что это не ноль. Остальные - это строки. Я не люблю это поведение, но так оно и работает.

Итак, поскольку ваш @user.address1 был уже строкой, почему бы не появиться до тех пор, пока вы не добавили to_s? Я не уверен. Из того, что я вижу, похоже, должно быть. Не могли бы вы разместить какой-либо код из представления, которое отображает его? Что делать, если вы попробуете <%=h @user.address1 %>? Если вы просматриваете HTML-страницу страницы, что-нибудь там?

+0

Это работает сейчас. Я не знаю, что произошло, но я перезапустил сервер несколько раз и воссоздал БД. Хм. Спасибо за информацию, что debug только ставит «вокруг» поля, которые нуждаются в разъяснении ... это любопытное hokey, я бы хотел, чтобы он просто делал это вокруг каждой переменной. – Kevin

Смежные вопросы