Ruby on Rails表单错误未显示

时间:2019-03-17 09:06:54

标签: ruby-on-rails ruby forms

我正在尝试在表单中显示错误,但没有显示,有人可以帮我吗?

这是我的控制器:

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 个答案:

答案 0 :(得分:1)

这里发生的事情是,无论是否创建Bug,您都将重定向到bugs_path。相反,您应该做这样的事情

@bug = Bug.new(bug_params)

if @bug.save
  redirect_to bugs_path, notice: 'Bug was successfully created.'
else
  render :new
end

答案 1 :(得分:1)

您的标记无法更改

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

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

答案 2 :(得分:0)

您的控制器创建方法需要修改以显示错误消息。目前,您正在尝试创建Bug。如果已创建错误或未创建错误,那么您将重定向至错误对象正在重置的错误索引页面。

这是修改后的创建方法代码-

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

希望它能工作。