2009-12-18 32 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

現在有效。我不知道發生了什麼,但我重新啓動了服務器多次並重新創建數據庫。嗯。感謝有關調試的信息只會在需要澄清的字段中放置「......這有點麻煩,我希望它只是在每個變量周圍都做了。 – Kevin 2009-12-18 05:26:34