gpt4 book ai didi

ruby-on-rails - 具有可选字段的模型未保存

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

在我的模型中,我有以下字段:

class Comment
include Mongoid::Document

field :author, type: String
field :author_email, type: String
field :author_url, type: String
field :author_ip, type: String
field :content, type: String

validates :author, presence: true, length: { minimum: 4 }
validates :content, presence: true, length: { minimum: 8 }
end

我还有一个表单,用于提交“评论者”可能提供的字段:

<%= form_for [@article, @article.comments.build] do |f| %>
<div class='comment_content'>
<%= f.text_area :content %>
</div>

<div class='comment_author_email'>
<%= f.email_field :author_email %>
</div>

<div class='comment_author'>
<%= f.text_field :author %>
</div>

<div class='comment_author_url'>
<%= f.url_field :author_url %>
</div>

<div class='comment_submit'>
<%= f.submit %>
</div>
<% end %>

字段“作者”和“内容”是必需的,其他字段会自动填写(但正在工作)。问题是,当用户不填写可选的“URL”字段时,模型不会保存评论。跟随我的 Controller :

class CommentsController < ApplicationController
def create
@article = Article.find params[:article_id]
@comment = @article.comments.create(comment_params)
@comment.author_ip = request.remote_ip
if @comment.save
flash[:notice] = 'Comment published'
else
flash[:alert] = 'Comment not published'
end
redirect_to article_path(@article)
end

private
def comment_params
params.require(:comment).permit(:content, :author_email, :author, :author_url)
end
end

评论保存失败,但没有设置“警告”,也没有设置“通知”。它似乎只是崩溃并跳过了整个方法。如果每个字段都被填充,我只能保存评论,否则它会失败并且没有任何消息。

我错过了什么?

最佳答案

首先想到的是您出于某种原因将评论保存了两次。首先,在使用 @article.comments.create(comment_params) 而不是 @article.comments.new(comment_params) 时保存它。所以第一次保存失败,没有闪光。

我还建议您进行一些测试,看看有什么不正常,或者至少使用 debugger gem 潜入正在运行的代码中。

关于ruby-on-rails - 具有可选字段的模型未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827362/

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