2017-05-25 67 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