rails: отображение сообщений об ошибках в форме

#ruby-on-rails #form-for

#ruby-on-rails #форма- для

Вопрос:

у меня есть действие ‘modif’, активируемое ссылкой, которое загружает данные из моей базы данных, а затем отображает форму через представление ‘modif’. Форма связана с @newaut. В этой форме ссылка ведет к действию ‘modifvalid’. Он выполняет некоторые тесты для введенных данных и может возвращать сообщение об ошибке. В случае ошибки, если я перенаправляю на действие ‘modif’ для отображения ошибки, мои данные возвращаются к своим исходным значениям, мои изменения в форме теряются, и отображается ошибка. Итак, я отображаю свой вид modif. Но @newaut больше не существует, поэтому я должен перезагрузить его с данными параметров. Результат в порядке. Есть ли способ просто отобразить сообщение об ошибке без перезагрузки всех данных, введенных в форму. Спасибо.

     def modif
      @zgtitre="Modification d'un Auteur"
      @newaut=Auteur.find(params[:id])
    end

    def modifvalid
      @newaut=Auteur.find(params[:auteur][:id])
      @newaut[:autabr]= params[:auteur][:autabr].upcase
      @newaut[:autnom]= params[:auteur][:autnom]
      inderr=0
      flash[:meserr]=""
      if ..... then
        flash[:meserr]="xxxxx"
        inderr=1
      end
      if inderr==1 then
        @zgtitre="Modification d'un Auteur après erreur"
        render :modif
        return
      else
        @newaut.save
        redirect_to lister_les_auteurs_path
      end
    end

    <%= form_for @newaut, url: {action: "modifvalid"}, method: :post do |f| %>
    <%= f.hidden_field :id %>
    <div class="field">
      <%= f.label :Nom %><br>
      <%= f.text_field :autnom %>
      <%= flash[:meserr] %>
    </div>
    <div class="field">
      <%= f.label :Nom_court %><br>
      <%= f.text_field :autabr %>
    </div>
    <div class="commandes">
      <%= f.submit "Valider", class: "commandes_liens"%> 
      <%=link_to "Abandonner", lister_les_auteurs_path, class: "commandes_liens" %>
    </div>
    <% end %>
 

Ответ №1:

Используйте это:

 <%= error_messages_for :auteur %>