0

たくさんのフィールドを持つかなり基本的なフォームがあります。ここに抜粋があります:

<%= form_for(@subject) do |f| %>

  <% if @subject.errors.any? %>
    <div id="error_explanation">
    <h2><%= t('activerecord.errors.subject.header', :model => Subject.model_name.human, :count => @subject.errors.count) %></h2>

      <ul>
      <% @subject.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="group">
    <fieldset class="left">
      <div class="field">
        <%= f.label "Anrede" %>

        <%= f.radio_button :title, "Herr" %>
        <%= f.label :title_herr, "Herr", class: "radio" %>

        <%= f.radio_button :title, "Frau" %>
        <%= f.label :title_frau, "Frau", class: "radio" %>
      </div>
      <div class="field">
        <%= f.label :name %>
        <%= f.text_field :firstname, class: "m", placeholder: "Vorname" %>

        <%= f.text_field :lastname, class: "m", placeholder: "Nachname" %>
      </div>
      <div class="field">
        <%= f.label "Stadt" %>
        <%= f.select :city, Subject::CITIES, prompt: "- Bitte wählen -" %>
      </div>

コントローラーは、ほとんどまだ scaffold からのものです。

  # POST /subjects
  # POST /subjects.json
  def create
    @subject = Subject.new(subject_params)

    respond_to do |format|
      if @subject.save
        format.html { }
        format.json { render action: 'create', status: :created, location: @subject }
      else
        format.html { render action: 'new' }
        format.json { render json: @subject.errors, status: :unprocessable_entity }
      end
    end
  end

ただし、無効なフォームを送信すると、#error_explanation-div が表示されますが、以前のようにエラーのあるフィールドがラップdiv.field_with_errorされません。どの変更が壊れたのか本当にわかりません。

4

1 に答える 1

1

あなたが期待する動作が Rails で利用できるかどうかはわかりませんが、 simple_formまたはformtastic gem を確認できます (前者をお勧めします)。

于 2013-08-08T09:54:58.030 に答える