Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3:重新填充带有换行符的文本区域时,为什么会出现缩进?_Ruby On Rails_Ruby On Rails 3.1_Formatting_Textarea_Newline - Fatal编程技术网

Ruby on rails Rails 3:重新填充带有换行符的文本区域时,为什么会出现缩进?

Ruby on rails Rails 3:重新填充带有换行符的文本区域时,为什么会出现缩进?,ruby-on-rails,ruby-on-rails-3.1,formatting,textarea,newline,Ruby On Rails,Ruby On Rails 3.1,Formatting,Textarea,Newline,我正在尝试编写一些表单,其中包括Rails 3.1.3中的text\u区域标记。通常,这些文本区域由多个段落填充(即,它们包括换行符)。如果我保存文本并使用simple\u格式显示,段落会正确显示,但是如果我重新填充相同的表单进行编辑,格式似乎会在每一行中断后添加缩进。例如,如果我在表单的文本区域中输入以下内容: Item 1 Item 2 Item 3 我保存它,下次加载表单编辑数据时,文本区域将填充以下内容: Item 1 Item 2 Item 3 有人知道为什么会发生

我正在尝试编写一些表单,其中包括Rails 3.1.3中的
text\u区域
标记。通常,这些文本区域由多个段落填充(即,它们包括换行符)。如果我保存文本并使用
simple\u格式
显示,段落会正确显示,但是如果我重新填充相同的表单进行编辑,格式似乎会在每一行中断后添加缩进。例如,如果我在表单的文本区域中输入以下内容:

Item 1
Item 2
Item 3
我保存它,下次加载表单编辑数据时,文本区域将填充以下内容:

Item 1
    Item 2
    Item 3
有人知道为什么会发生这种情况以及如何解决吗?显示此信息的表单视图段如下所示:

    <fieldset>
        <section class="field">
            <%= f.label "Títulos, seminarios, cursos" %>
            <%= f.text_area :titles_seminars_courses %>
        </section>
        ...
    </fieldset>
编辑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>
项目1
项目2
项目3

好的,问题似乎是应用程序中
html.haml
html.erb
视图的混合。因此,要么是
.erb
视图未正确渲染,要么是它们与其他
.haml
视图不协调。例如,在mi的情况下,应用程序布局视图是用haml表示的,而表单是用erb表示的

不管是什么原因,归根结底,文本\区域\标记在erb中无法正确呈现,但在haml中却能正确呈现。因此,我的解决方法是,尽管我知道它非常粗糙且不美观,但我还是在haml中创建了一个名为
\u text\u area.html.haml的小部分,它只为表单呈现文本区域:

_text_area.html.haml:

-if defined? options
    = f.text_area field, options
-else
    = f.text_area field
因此,每当我想在表单中有一个text_区域标记时,我必须调用如下的渲染:

<%= 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 %>

...
'common/text_area',:locals=>{:f=>f,:field=>:some_field_from_instance,:options=>{:cols=>40,:rows=>10}}%>
“公共/文本区域”,:locals=>{:f=>f,:field=>:some\u other\u field}%>
...
这是完美的渲染。这就是为什么我认为问题在于haml及其对缩进的解释。如果有人有更好的解决方案,请务必告诉我。

对于HAML,如果您使用:

 ~ f.text_area
而不是:

= f.text_area
它的效果与
Haml::Template.options[:ught]=true
相同,并将保留保存的文本字符串中的空白,而不是试图对其进行修饰


阅读文档中的更多内容

展示如何使用simple_格式。simple_格式(在3.2以下、3.0以上的版本中)将改变字符串的格式。@RadBrad我在另一个视图中使用simple_格式,该视图仅显示此数据(不可编辑),并且显示正确(无缩进)。此缩进问题仅在表单中出现,其中可编辑文本区域标记填充了实例字段。您还需要查看其他视图吗?@RadBrad我没有在与此表单相同的视图中使用simple_格式,这似乎导致您发布的案例出现问题。另外,根据答案,这个问题在Rails 3.1中得到了解决。在我的例子中,没有呈现

标记;只需使用该格式的文本。我将用渲染视图更新帖子。问题实际上似乎是这些标签没有渲染。我想我需要一种方法让f.text\u区域语句以某种方式使用simple\u格式助手。你真是个天才。我的布局是一个haml文件,但应用程序的某些部分是erb。这个bug至今仍然存在,我们目前使用的是Rails 4.0.3和haml 4.0.5。谢谢你的提示!快速跟进:使用
Haml::Template.options[:ught]=true
打开丑陋模式是一个很好的解决方法,以防有人发现这个问题!
= f.text_area