在提交之前对新表单进行Rails验证
问题描述:
我在我的Rails项目中为我的帖子添加验证。一切都适用于编辑,但在新窗体上,警告div已经出现在表单实际上被引用之前。我如何解决它的方式,只有在验证返回false时,div才会出现在表单提交中。 THX)在提交之前对新表单进行Rails验证
posts_controller
def new
@post = Post.new
end
def create
post = Post.new(post_params)
if post.valid?
post.save
redirect_to post_path(post.id), success: "..."
else
@post = post
render 'new'
end
end
new.html.erb
<h1>Nouvel article</h1>
<% if @post.invalid? %>
<div class="alert alert-danger">
<% @post.errors.full_messages.each do |message| %>
<%= message %><br>
<% end %>
</div>
<% end %>
<%= form_for @post do |f| %>
<div class="form-group">
<label>Titre de l'article</label>
<%= f.text_field :name, class: "form-control" %><br />
<label>Contenu de l'article</label>
<%= f.text_area :content, class: "form-control" %>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">...</button>
</div>
<% end %>
答
您可以添加changed?
检查您的模板:
<% if @post.changed? && @post.invalid? %>
<div class="alert alert-danger">
<% @post.errors.full_messages.each do |message| %>
<%= message %><br>
<% end %>
</div>
<% end %>
这部分工作,因为我没有看到红色警戒div时,我到达窗体中,但我没有看到它,当我现在如果我不'通过验证例如留下姓名blanck)。 – frogtube
对,原始版本在所有情况下都不正确。你可以尝试新版本吗?希望新人能正确工作。 –
回到最初,当我到达页面时,红色div在那里。 – frogtube