Понимание типов переменных Rails в Debug - PullRequest
0 голосов
/ 18 декабря 2009

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

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

Когда я отлаживал модель с помощью debug (@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 этого не сделал.

Так почему я не смог изначально использовать <% =@user.address1%>, не преобразовав его в строку? Какая переменная является 123 главной ул. без кавычек?

1 Ответ

1 голос
/ 18 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...