2015-07-03 71 views
3

在控制器中,我可以傳遞字符串來查看。在控制器中生成下標並通過查看

如何傳遞帶下標的字符串?

在html中很簡單,只需使用<sub>標籤即可。

我試了3次,通過這個下標查看,但失敗。

  1. 如果我通過<sub>裏面的字符串,它會顯示I<sub>tag</sub>,而不是我標籤
  2. 如果我用string1="string"+<sub>+"tag"+</sub>,並通過 string1,控制器會給出錯!
  3. 最後,我試着直接在頁面裏面複製下標字符串,我 也收到一個錯誤,說它無法顯示。

如何傳遞下標字符串來查看?我得到循環不同的條件,所以我不能使用<sub>標籤,我需要從控制器傳遞。

編輯:

我試着在控制器

@[email protected]_s + " m/s<sup>2</sup>".html_safe 

至於建議的解決了這個代碼,我得到:

what shows up in web page

正如我在第一次試說,顯示<sup>而不是m 。

如果我這樣做,我有很多不同類型的數據,我需要根據不同的類型添加檢查數據類型代碼,它可行但會使視圖混亂,我覺得應該有一個整潔的方式解決它在控制器?

回答

1

您需要安全地渲染HTML在您的視圖,併爲此目的,你需要調用您的字符串html_safe功能:

@str = "I<sub>tag</sub>".html_safe 

而且,現在當你通過這個@str到您的視圖,它按預期呈現@str

鑑於:

<%= @str %> 

注意:

這將是一個非常不好的做法,這樣做。 <sub>ag</sub>屬於視圖,所以它應該在視圖中。你可以這樣做以下:

在控制器:

@str = "tag" 

,並考慮:

I<sub><%= @str %></sub> 
<%# or %> 
<%= "I<sub>#{@str}</sub>" %> 
+0

我試過,但它顯示我標籤與顯示的子標籤......我標籤,複製過了下標「I₄」.html_safe也給錯誤:「我們很抱歉,但出錯了。」 .. – Orz

+0

這怎麼可能?我自己檢查了一下。寫'@str =「我標記」.html_safe',在你看來,'<%= @str %>',它應該正確渲染它。 –

+0

@Orz我已經更新了我的答案。 –

相關問題