在我的应用程序中,我创建了一个表单来创建新帖子(帖子是一个模型)。我有一个名为 posts 的控制器。该表单位于管理员控制器中。表单使用 form_for(@post)。它发布到后控制器。在这种方法中,帖子被成功创建。但问题在于提交失败。在表单中,我添加了代码以显示错误
<% if @post.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(@post.errors.count, "error") %>
</div>
<ul>
<% @post.errors.full_messages.each do |msg| %>
<li> <%= msg %> </li>
<% end %>
</ul>
</div>
<% end %>
但是在 post 控制器中,如果提交失败,我已将其设置为 redirect_to admins 控制器中的 newpost 页面。重定向时,我会丢失错误消息。
所以,我补充说
render 'dasharea/newpost'
localhost:3000/dasharea/newpost 是具有表单的页面的 URL。使用此代码,它说
Missing template dasharea/newpost with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}.
但我已经在那个页面了?然后我尝试添加控制器和这样的动作(注意:我正在编辑帖子控制器的创建动作。我需要在管理员控制器中呈现 newpost 动作):
render 'admins/newpost'
然后,它将引导我到帖子:
http://localhost:3000/posts
但是现在,表格在那里,我可以看到错误。但我需要渲染我有表单(dasharea/newpost)的原始页面!我怎样才能做到这一点?我做错了什么?