gpt4 book ai didi

ruby-on-rails - Ruby on Rails 3 : Trying to render a view from a different controller. 但我得到了同一个 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:25 24 4
gpt4 key购买 nike

在我的应用程序中,我创建了一个表单来创建新帖子(帖子是一个模型)。我有一个名为 posts 的 Controller 。该表单位于管理员 Controller 中。表单使用 form_for(@post)。它发布到帖子 Controller 。在这种方法中,帖子创建成功。但问题在于提交失败。在表单中,我添加了显示错误的代码

    <% 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 %>

但是在帖子 Controller 中,如果提交失败,我将其设置为 redirect_to 管理员 Controller 中的新帖子页面。重定向时,我会丢失错误消息。

所以,我加了

render 'dasharea/newpost'

localhost:3000/dasharea/newpost 是具有表单的页面的 URL。使用这段代码,它说

Missing template dasharea/newpost with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}.

但是我已经在那个页面了?然后我尝试像这样添加 Controller 和 Action (注意:我正在编辑帖子 Controller 的创建 Action 。我需要在管理员 Controller 中呈现新帖子 Action ):

render 'admins/newpost'

然后,它将引导我到帖子:

http://localhost:3000/posts

但现在,表格已经存在,我可以看到错误。但是我需要呈现我有表格(dasharea/newpost)的原始页面!我怎样才能做到这一点?我做错了什么?

最佳答案

我的解决方案:AJAX 表单。没有更多的问题。使用 javascript 现场更新表单。如果需要,您甚至可以使用 window.location.href = '/your-url' 进行重定向。

如果你需要处理 html 请求,你总是可以将你的表单指向你选择的 url:

form_for @post, url: route_to_current_controller

处理此 Controller 上的 create_post 操作,并确保您的路由设置正确。不利的一面是您将在与 PostsController 不同的 Controller 中处理帖子创建。

关于ruby-on-rails - Ruby on Rails 3 : Trying to render a view from a different controller. 但我得到了同一个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14426122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com