我无法在此页面上显示错误消息。它们适用于任何其他页面,但不适用于此页面
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教程制作的,正如我所说,我对其他所有形式都可以正常工作但是这个。
答案 0 :(得分:1)
原因是当您渲染表单时,您实例化一个新的类别:
form_for([@guide, Guide.friendly.find(@guide.id).categories.new],
您需要为form_for
提供包含错误(您的控制器中为@category
)的类别实例。所以我会改变你的形式:
form_for([@guide, @category],
然后在您的#new
方法中确保进行设置:
@category = @guide.categories.build