簡體   English   中英

如何在Ruby on Rails中更改特定頁面的CSS

[英]How to change css for a specific page in Ruby on Rails

我目前正在研究Ruby on Rails入門頁面 到目前為止,我已經完成了5.10。

在5.10,添加驗證,“新建文章”頁面中有標題字段和文本區域。 單擊“保存文章”按鈕時,標題字段將被驗證,並且如果該字段為空白或太短,則會引發錯誤,並在頁面中顯示錯誤消息。

我遇到的問題是,在呈現錯誤消息時,標題字段在“標題”標簽與其文本字段之間獲得了一個額外的空格。

原因可能是div塊的默認行為,如本問題所述

錯誤之前:

<label for="article_title">Title</label>

錯誤后:

<div class="field_with_errors">
  <label for="article_title">Title</label>
</div>

因此,我只想為該“新文章”頁面編輯CSS,以刪除多余的空白。 但是我不知道該怎么做。 可能我需要添加的對CSS的更改如下:

div.field_with_errors {
  display: inline;
}

我是否需要在erb文件中添加一些代碼,或者為此頁面創建一個CSS文件?


以下是app / views / articles / new.html.erb中的代碼。

<h1>New Article</h1>

<%= form_for :article, url: articles_path do |f| %>

  <% if @article.errors.any? %>
    <div id="error_explanation">
      <h2>
        <%= pluralize(@article.errors.count, "error") %>
        prohibited this article from being saved:
      </h2>
      <ul>
        <% @article.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <p>
    <%= f.label :title %><br>
    <%= 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 %>

並且,附有截圖。 錯誤之前 錯誤后

您也可以通過創建新的CSS文件或使用更簡單的方法來做到這一點,方法是在views / layouts / application.html.erb的body標簽內編寫以下代碼

<body  class="<%= controller_name %> <%= action_name %>">

這將定義始終為您提供控制器的名稱以及每個頁面上的操作名稱,這對於每個頁面都是唯一的。

您總是將自己的application.css重命名為application.scss.css,這樣您就可以同時編寫scss和CSS。 然后在您的application.scss.css中編寫

.article .new{
div.field_with_errors {
  display: inline;
}
}

在這里.article是頁面的控制器名稱,而new是頁面的動作名稱。 將來這將對您有所幫助,您還可以定位CSS和Javascript中的任何頁面。

您將要刪除每種表格中不需要的空格,而不僅僅是新的文章表格。

將以下樣式添加到您的css文件中,當發生驗證錯誤時(即,當頁面中存在具有field_with_errors類的div時),它將應用於所有表單。

div.field_with_errors {
  display: inline;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM