2015-08-24 177 views
0

我正在使用rails窗體。在這種形式下,我有一個text_area。我想在rails的文本區域顯示預填充的數據。數據是html內容。如何在rails文本區域顯示格式化文本?

我試過以下,

<% test_val= "<h1>Test Value</h1>" %> 
<%= form.text_area(:myval, :value => test_val.html_safe, size: '30x10', :style => 'border: 10;') %> 

myval是我的表單變量。但不是在文本區域以粗體字和大字體打印Test Value,而是顯示<h1>Test Value</h1>。我希望HTML標籤中的內容可以用HTML格式打印。可能嗎?如果是,我該如何實現它?

p.s.我正在使用ruby v1.9.3 & rails 3.1.0

+0

你不能做到這裏面text_area,但你可能要採取看看[contenteditable屬性](http://html5demos.com/contenteditable) – ex0ns

+0

使用後,我將如何鏈接文本框的數據與我的表單變量? – Abhishek

+0

您將無法使用默認的導軌助手,並可能需要一點JavaScript,請參閱[本文](http://stackoverflow.com/a/11565267/1062711) – ex0ns

回答

0

這在textarea中是不可能的,這與rails無關,但與Html無關。

相反,你可以使用一個div與contenteditable =true

例如設置:

<div contentEditable="true">content goes here </div> 

如果您正在使用的JavaScript,你可以在一個變量存儲結果,像這樣:

var myvar = document.getElementById("divid").innerHTML 
+0

我不能使用div,因爲我必須在提交時單擊「表單變量myval」來保存文本區域的值。如果我可以使用可編輯的div並在我的表單變量中使用相同的文本,那麼我很好。 – Abhishek

+0

@Abhishek你使用的是JavaScript嗎?如果是這樣,您可以使用.innerHTML方法來存儲該值。 – Mhmd

+0

現在,我將如何將JavaScript變量分配給我的表單變量? – Abhishek

0

正如我之前所說的,不幸的是,您應該使用contentEditable,您將無法使用rails現有的幫助器發送表單,並且必須使用一些JavaScript構建形式,我沒有找到方法真的「乾淨」,但它的工作原理:

<html> 
    <head></head> 
    <body> 
     <form id="my_form" action="#" method="POST"> 
      <div id="editable_div" contenteditable> 
       <h1>Editable HTML Content</h1> 
      </div> 
      <input type="submit" /> 
     </form> 
    </body> 
    <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> 
    <script> 
     var form = $("#my_form"); 
     form.submit(function() { 
      console.log('submitted'); 
      form.append($('<input/>', { 
       type: 'hidden', 
       name: 'html_content', 
       value: $("#editable_div").html() 
      })); 
     }); 
    </script> 
</html> 

你應該能夠這段代碼很容易適應你的軌道之一。

+0

我將如何將值賦給我的表單變量?我使用的是rails格式,因爲在提交時我不需要自己創建對象。它也可以在這裏完成嗎? – Abhishek