2011-04-21 31 views
0

在我的控制器動作我做輸出的javascript:爲什麼叫to_json一個充滿

@user = user.to_json 

然後在我看來,我做的:

<script type="text/javascript"> 
<%= @user %> 
</script> 

還有生成的HTML是這樣的:

[{&quot;user&quot;:{&quot;age&quot;:8,.... 

它爲什麼到處都包含"?

在IRB它輸出就好了,如:

[{\"user\":{\"age\":8,... 

回答

2

在Rails 3中的視圖的所有輸出默認情況下逃脫。您以前必須致電h(..)以逃脫東西。

你可以告訴Rails,真正你所輸出的安全和鐵路並不需要通過調用html_safe擔心它:

<script type="text/javascript"> 
<%= @user.html_safe %> 
</script> 

這樣做的原因是這些數據往往來自於你的用戶(例如,人們發佈表單),並且可能包含惡意內容,然後輸出,從而導致XSS攻擊等。 Rails 3在這裏採取了一些(有點爭議的)謹慎的做法。

這裏是胡達約html_safe良好的blog post和什麼是真正回事

2

嘗試原始的方法?

<%= raw @user %>