2

我正在尝试编写一些包含text_areaRails 3.1.3 中标签的表单。通常,这些文本区域填充有多个段落(即它们包括换行符)。如果我保存文本并用 显示simple_format,段落显示正确,但如果我重新填充相同的表单进行编辑,格式似乎在每个换行符后添加一个缩进。因此,例如,如果我在表单的文本区域中输入以下内容:

Item 1
Item 2
Item 3

然后我保存它,下次加载表单以编辑数据时,text_area 将填充以下内容:

Item 1
    Item 2
    Item 3

有谁知道为什么会发生这种情况以及如何解决它?显示此内容的表单视图部分如下:

    <fieldset>
        <section class="field">
            <%= f.label "Títulos, seminarios, cursos" %>
            <%= f.text_area :titles_seminars_courses %>
        </section>
        ...
    </fieldset>

保存到数据库时我没有做任何特别的事情(没有 gsub 或任何东西),只是直接保存'Item 1\r\nItem 2\r\nItem 3\r\n'字符串。我对这些数据的初始创建和编辑使用相同的表单。

提前感谢您对此问题的任何帮助。

编辑1:

正确显示数据的视图如下(但它不在 text_area 中):

<section class="titles_seminars_courses">
    <%= simple_format(@academic_background.titles_seminars_courses, :class => "other_study") %>
</section>

编辑2:

<textarea cols="40" id="academic_background_titles_seminars_courses" name="academic_background[titles_seminars_courses]" rows="20">Item 1
        Item 2
        Item 3</textarea>
4

2 回答 2

3

好的,问题似乎是应用程序中的视图html.hamlhtml.erb视图之间的混合。所以要么.erb视图没有正确渲染,要么它们与其他.haml视图不兼容。例如,在 mi 情况下,应用程序布局视图是 haml,但表单是 erb。

不管是什么原因,最重要的是 text_area_tags 不能在 erb 中正确呈现,但在 haml 中却可以。所以我的解决方法,虽然我知道它很hacky而且不漂亮,但是在haml中做一个小部分,它只_text_area.html.haml呈现表单的textarea:

_text_area.html.haml:

-if defined? options
    = f.text_area field, options
-else
    = f.text_area field

所以每次我想在表单中有一个 text_area 标记时,我都必须像这样调用渲染:

<%= form_for @instance do |f| %>
    ...
    <%= render :partial => 'common/text_area', :locals => {:f => f, :field => :some_field_from_instance, :options => {:cols => 40, :rows => 10}} %>
    <%= render :partial => 'common/text_area', :locals => {:f => f, :field => :some_other_field} %>
    ...
<% end %>

这完美呈现。这就是为什么我认为问题在于haml及其对缩进的解释。如果有人有更好的解决方案,请告诉我。

于 2012-11-06T20:29:26.540 回答
0

对于 HAML,如果您使用:

 ~ f.text_area

代替:

= f.text_area

它与保存的文本字符串中的空格具有相同的效果,Haml::Template.options[:ugly] = true并且会保留空格,而不是试图美化它。

在此处的文档中阅读更多信息

于 2017-04-20T20:24:02.083 回答