gpt4 book ai didi

ruby-on-rails - 尝试显示错误消息,但遇到: undefined method `errors' for nil:NilClass

转载 作者:行者123 更新时间:2023-12-03 08:32:58 24 4
gpt4 key购买 nike

我正在尝试在Rails中实现错误消息,但我无法以某种方式使其无法正常工作。

我正在尝试添加错误消息的 View :

<%= form_for([@post, @post.comments.build], html: {class: 'form-horizontal'}) do |f| %>

<% if @comment.errors.any? %>

<div id="errorExplanation" class="span5 offset1 alert alert-error">
<button type="button" class="close" data-dismiss="alert">&times;</button>

<h4>Something went wrong!</h4><br>

<% @post.errors.full_messages.each do |msg| %>
<p><%= msg %></p>
<% end %>
</div>

<% end %>

和 Controller :
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(params[:comment].permit(:commenter, :body))
redirect_to post_path(@post)
end

和错误消息:

nil:NilClass的未定义方法“错误”
提取的来源(第65行左右):
<li>
<%= form_for([@post, @post.comments.build], html: {class: 'form-horizontal'}) do |f| %>

65 -> <% if @comment.errors.any? %>

<div id="errorExplanation" class="span5 offset1 alert alert-error">
<button type="button" class="close" data-dismiss="alert">&times;</button>

当然,评论属于可以发表很多评论的帖子。有什么帮助吗?我尝试了所有可能想到的事情(由于我是RoR的新手,所以不多;)-包括尝试获取错误消息的各种方法(@ post.comment.errors.any?等)。

提前致谢。
蒂莫

最佳答案

根据您的评论,这里发生了很多事情。

您正在尝试创建注释,因此表单操作应为CommentController#create。
该 View 很合理,它将是PostsController#show(您未指定),并且在呈现之前需要实例化@comment。可能:

PostsController

def show
@post = Post.find(params[:id])
@comment = @post.comments.build
end

评论 Controller
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.build(params[:comment].permit(:commenter, :body))
if @comment.save
redirect_to post_path(@post)
else
render :file => "posts/show"
end
end

请注意,您必须呈现而不是重定向,以便保留@comment实例并可以呈现错误。

posts/show.html.erb
<%= form_for([@post, @post.comments.build], html: {class: 'form-horizontal'}) do |f| %>
<% if @comment.errors.any? %>

这是否正确将取决于您的routes.rb。我假设评论是帖子中的嵌套资源,这就是您的问题导致的思考。

关于ruby-on-rails - 尝试显示错误消息,但遇到: undefined method `errors' for nil:NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18322336/

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