簡體   English   中英

Ruby on rails-簡單形式,不會顯示單選的錯誤。 其他錯誤顯示正常

[英]Ruby on rails - Simple form not displaying errors for radio select. Other errors display fine

我有一個包含4個元素的用戶注冊表格(Devise); 用戶名,電子郵件,密碼和“用戶類型”。 用戶類型為布爾值,並在表單上顯示為單選。

用戶名,電子郵件和密碼的錯誤沒有問題,但是如果用戶未選擇任何一個單選按鈕,則不會顯示任何錯誤。 驗證已就位,並且沒有選擇任何一個單選按鈕就不會發送表格,但是我沒有收到任何錯誤。

表格:

<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
            <%= f.error_notification %>
        <div class="role-selector">
            <p class="type-sel-txt"><%= t('front.whattype') %></p>
            <label for="artistuser">
                <%= f.radio_button :artist, "1", :id => "artistuser" %>
                <span class="artistuser-sel"><%= t('front.bandm') %></span>
            </label>
            <label for="eventuser">
                <%= f.radio_button :artist, "0", :id => "eventuser" %>
                <span class="eventuser-sel"> <%= t('front.evento') %></span>
            </label>
        </div>
        <%= f.input :username, required: true, autofocus: true, placeholder: t('forms.login.user'), label: false %>
        <%= f.input :email, required: true, placeholder: t('forms.login.email'), label: false %>
        <%= f.input :password, required: true, placeholder: t('forms.login.password'), label: false %>
        <div id="passcheck"></div>
        <%= f.button :submit, t("forms.login.signup"), id: "register-btn" %>
    <% end %>

User.rb:

  validates_inclusion_of :artist, in: [true, false], on: :create

注冊沒有問題,我唯一的問題是錯誤未顯示。 我不確定是否需要粘貼更多代碼,但是如果是這樣,我將使用所需的內容進行更新。

與簡單形式的f.input處理輸入本身之外的所有相關標簽(標簽標簽,錯誤消息標簽) f.radio_buttonf.radio_button僅處理輸入字段,因為它實際上ActionView的幫助者 ,而不是簡單形式。

當字段附加了一些錯誤時,默認情況下,簡單表單會使用“錯誤”類生成一個span 我想您將不得不像使用字段標簽那樣,自行繪制跨度:

<div class="role-selector">
  <p class="type-sel-txt"><%= t('front.whattype') %></p>
  <label for="artistuser">
     <%= f.radio_button :artist, "1", :id => "artistuser" %>
     <span class="artistuser-sel"><%= t('front.bandm') %></span>
  </label>
  <label for="eventuser">
     <%= f.radio_button :artist, "0", :id => "eventuser" %>
     <span class="eventuser-sel"> <%= t('front.evento') %></span>
  </label>

  <!-- show error for the artist attribute, if present -->
  <% if resource.errors['artist'].present? %>
    <span class="error"><%= resource.errors['artist'] %></span>
  <% end %>
</div>

我無法弄清楚發生了什么,但是您可以嘗試一些技巧

<%= f.radio_button :artist, "1", :id => "artistuser", :selected => f.object.artist %>

然后您可以檢查它是否存在

<% if f.object.artist.blank? %>
  Display Your Error Message

只是一個粗略的想法,但只需進行少量修改即可使其生效,如果有任何問題,請告訴我。

暫無
暫無

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

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