如何在rails文本区域中显示格式化文本?

时间:2015-08-24 07:45:27

标签: html ruby-on-rails ruby ruby-on-rails-3

我使用的是rails形式。在那种形式中,我是text_area。我想在rails的文本区域中显示预填充数据。数据是html内容。

我试过了,

<% 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&amp; rails 3.1.0

2 个答案:

答案 0 :(得分:1)

您可能想要使用所见即所得的编辑器。 我建议你看看

https://github.com/Nerian/bootstrap-wysihtml5-rails

使用simple_form,您可以简单地将其用作:

<%= f.input :content, as: :wysihtml5 %>

答案 1 :(得分: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>

您应该可以很容易地将此​​代码调整到您的轨道上。