呈现错误消息仅在一页上不起作用

Rendering error messages not working on just one page

我无法在此页面上显示错误消息。它们在任何其他页面上都可以正常显示,但不能在这个页面上显示

mod_approval.index.html.erb

<%  @check_category.each do |category| %>

 <%= form_for([@guide, Guide.friendly.find(@guide.id).categories.new], url: guide_mod_panel_approve_category_path, method: :post) do |f| %>
       <%= render 'shared/error_messages', object: f.object %>
       <%= hidden_field_tag :check_id, category.id %>
       <%= f.hidden_field :name, :value => category.name %>
       <%= f.submit "Approve"  %>
 <% end %>
<% end %>

mod_approval_controller

def mod_add_category

    @guide          = Guide.friendly.find(params[:guide_id])
    @check_category = CheckCategory.where(guide_id: @guide.id).all
    @category       = Guide.friendly.find(@guide.id).categories.new(category_params)

      if @category.save 

     flash[:success] = "Game category added succesfully!"
     redirect_to guide_mod_panel_mod_approval_index_path(@guide)
  else
     render 'mod_approval/index'
  end

end

路线

match '/guides/:guide_id/mod-panel/approve/category' => 'mod_approval#mod_add_category', :via => :post, as: :guide_mod_panel_approve_category
match '/guides/:guide_id/mod-panel/approve' => 'mod_approval#index', :via => :get, as: :guide_mod_panel_mod_approval_index

不太确定它们为什么不呈现 我尝试将 <%= render 'shared/error_messages', object: f.object %> 更改为 <%= render partial: 'shared/error_messages', object: f.object %> 但出现错误

undefined local variable or method `object' for #<#<Class:0x007ffdbcd1c3a8>:0x007ffdbcbdd320>

这一行<% if object.errors.any? %>

此错误渲染设置来自 Michael Hartls rails 教程,正如我所说,我对除此之外的所有其他形式都适用。

原因是当你呈现表单时,你实例化了一个新的类别:

form_for([@guide, Guide.friendly.find(@guide.id).categories.new],

您需要给 form_for 有错误的类别实例(@category 来自您的控制器)。所以我会将您的表格更改为:

form_for([@guide, @category],

然后在你的 #new 方法中确保你设置它:

@category = @guide.categories.build