Ruby on rails 拒绝显示[RoR]的错误消息

Ruby on rails 拒绝显示[RoR]的错误消息,ruby-on-rails,ruby,Ruby On Rails,Ruby,好的,我会尽力解释清楚 我有一个TopicsController,它里面有一个Show方法,可以循环浏览主题模型并显示所有需要的信息,在它下面我有一个用于发布模型的表单。问题是。。如果验证失败,错误消息将拒绝显示。我什么都试过了,不知道还能做什么。我有一个自定义的部分错误,应该可以工作 控制器: def create @community_post.user_id = current_user.id @community_post.community_topic_id = p

好的,我会尽力解释清楚

我有一个TopicsController,它里面有一个Show方法,可以循环浏览主题模型并显示所有需要的信息,在它下面我有一个用于发布模型的表单。问题是。。如果验证失败,错误消息将拒绝显示。我什么都试过了,不知道还能做什么。我有一个自定义的部分错误,应该可以工作

控制器:

  def create
    @community_post.user_id = current_user.id
    @community_post.community_topic_id = params[:community_topic_id]

    if @community_post.save
      redirect_to "/community_topics/#{@community_post.community_topic_id}", notice: 'Community post was successfully created.'
    else
      redirect_to "/community_topics/#{@community_post.community_topic_id}", notice: 'Community post was NOT successfully created.'
      @community_post.community_topic_id = nil
    end
  end
视图:

提交回复

部分:

    <% if @community_post.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-error">
      The form contains <%= pluralize(@community_post.errors.count, "error") %>.
    </div>
    <ul>
    <% @community_post.errors.full_messages.each do |msg| %>
      <li>* <%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

表单包含。
  • *

当您将流重定向到
/community\u topics/{@community\u post.community\u topic\u id}
时,变量
@community\u post
中的错误值丢失

您可以再次呈现相同的表单,也可以在通知中传递错误消息(例如
重定向到“/community\u topics/{@community\u post.community\u topic\u id}),通知:“community post未成功创建。错误:{@community\u post.Errors.full\u messages.join(',')”


谢谢。

您正在创建一个新实例,其格式为

<% @community_post  = CommunityPost.new %>


现在这个对象没有任何错误消息,这就是为什么您无法看到任何错误消息。另外,您正在将其重定向到其他操作,该操作不知道您的对象。因此,您做的每件事都是错误的

删除行
@community\u post=CommunityPost.new()
,因为它创建了一篇没有任何错误的新文章

另外,通过创建操作渲染表单

render :new
从其他控制器渲染视图

render :template => "controller/action"

好的,但问题是我必须渲染的节目在另一个控制器中,我无法使它工作。我到底需要什么?通知消息可以正常工作,但我希望它在表单下正确格式化,就像在我的应用程序中对所有其他表单一样。我尝试了“render:controller=>”community\u topics',:action=>”show',:id=>@community\u post.community\u topic\u id',但它只是试图为我所在的控制器呈现一个显示(community_posts)创建一个操作
new
,您将在其中设置
@community_post=CommunityPost.new
,并使用该变量创建初始表单。现在在创建操作中,当@community_post.save失败时,呈现新表单
呈现:new
(记住从视图中删除
)我之所以在视图中这样做,是因为community post没有自己的视图来创建它。它可以从另一个控制器视图中创建。它们基本上应该是类似于Stack Overflow的帖子。你有主要问题,你有回复。我发布的视图是页面底部的代码片段,其中我已经习惯了在纯MVC中做事情,一切都是按RESTFuly排序的,但很明显,尝试做一些稍微不同的事情会让一切都有点混乱。我完全知道你在说什么,因为我看到了完全相同的事情,但是,它没有与t一起工作首先修复了他的方法。这可能是由于使用了重定向_,这两者都导致了我的问题。我很难从另一个控制器获得渲染来实际渲染方法,但这使得这很困难。
render :template => "controller/action"