2017-05-25 64 views
0

我遵循官方rails tutorialRails - 渲染后的命令在标签后出现折线

我在我的article_controller中有render 'new'命令。如果我提供了一个无效的输入(太短),新的文章页面会被重新渲染。 但是,现在保存无效值渲染会在我的标题文本字段之前放置换行符。

Before After

<h1>New Article</h1> 

<%= form_for :article, url: articles_path do |f| %> 
    <p> 
    <%= f.label :title %> <-NO BREAK HERE! 
    <%= f.text_field :title %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_area :text %> 
    </p> 

    <p> 
    <%= f.submit %> 
    </p> 
<% end %> 

<%= link_to 'Back', articles_path %> 

正如你可以看到我故意留出了第一<br>标签标题的标签后,看到了差距。

这背后的故事是什么?

回答

1

这是因为Rails在div中封装了无效字段。普通领域,如:

<label for="foo">Email: </label> 
<input type="bar" value="fubar" name="baz[bar]" id="baz_bar"> 

将成为包裹在DIV CLASS =“field_with_errors”在默认情况下,当这些字段的值无效

<div class="field_with_errors"> 
    <label for="foo">Email: </label> 
</div> 
<div class="field_with_errors"> 
    <input type="bar" value="fubar" name="baz[bar]" id="baz_bar"> 
</div> 

您的div的风格(或没有)的方式,影响如何被展示。可能默认情况下,div会尝试并呈现一个在另一个之下,这就是为什么你在那里得到一个换行符。

您可以在此处阅读更多内容,了解如何覆盖此行为 https://rubyplus.com/articles/3401-Customize-Field-Error-in-Rails-5