Ошибки формы Ruby on rails не отображаются - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь отобразить ошибки в моей форме, но они не появляются, может кто-нибудь помочь мне в этом?

Вот мой контроллер:

def create
 @bug = Bug.create(bug_params)

 redirect_to bugs_path
end

private

  def bug_params
    params.require(:bug).permit(:owner, :title, :description)
  end

Моя модель:

class Bug < ApplicationRecord

    validates_presence_of :title
end

И моя форма:

<%= form_with model: @bug do |form| %>
    <% if @bug.errors.any? %>
        <h2>Errors : </h2>
        <ul>
            <% @bug.errors.full_messages.each do |message| %>
                <li><<%= message %>/li>
            <% end %>
        </ul>

    <% end %>

    <%= form.select :owner, @users.collect {|u| [ u.username, u.id ] } %>
    <%= form.text_field :title, placeholder: "title" %>
    <%= form.text_area :description, placeholder: "description" %>

    <%= form.submit %>
<% end %>

Ответы [ 3 ]

1 голос
/ 17 марта 2019

Ваша разметка имеет проблемы изменить это

<li><<%= message %>/li>

для

<li><%= message %></li>

1 голос
/ 17 марта 2019

То, что здесь происходит, вы перенаправляете на bugs_path независимо от того, создается ошибка или нет. Вместо этого вы должны сделать что-то вроде этого

@bug = Bug.new(bug_params)

if @bug.save
  redirect_to bugs_path, notice: 'Bug was successfully created.'
else
  render :new
end
0 голосов
/ 17 марта 2019

Необходимо изменить метод создания контроллера для отображения сообщений об ошибках.В настоящее время вы пытаетесь создать ошибку.Если ошибка создана или не создана, то вы перенаправлены на страницу индекса ошибок, на которую сбрасывается объект ошибки.

Вот модифицированный код метода создания -

def create
 @bug = Bug.create(bug_params)

 respond_to do |format|
   if @bug.persisted?
     format.html { redirect_to bugs_path, notice: 'Bug was successfully created.' }
   else
     format.html { render :new }
   end
 end
end

Надеюсь, он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...