gpt4 book ai didi

ruby-on-rails - rails 3 : How to display error messages in embedded form?

转载 作者:行者123 更新时间:2023-12-04 02:46:58 25 4
gpt4 key购买 nike

我是 Rails 的新手,正在尝试设置我的第一个嵌入式表单。表单本身有效,但我无法确定如何将验证错误消息发送到 View 。我假设 f.object.errors 会提供访问,但是虽然据说该方法存在,但 f.object.errors.count 总是返回 0,而 f.object.errors.any?返回假。除了不显示实际的错误消息外,表单按预期工作 - 即未能插入无效数据并返回到验证失败的表单。下面列出了模型、 Controller 和 View - 非常感谢任何帮助。

...
<!-- Form embedded in boards/show.html.erb -->
<%= form_for([@board, @board.boardthreads.build]) do |f| %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<div class="actions"> <%= f.submit %> </div>
</div>
<% end %>
...



class Boardthread < ActiveRecord::Base
belongs_to :user
belongs_to :board

validates :user, :presence => true
validates :board, :presence => true
validates :title, :presence => true
end


class BoardthreadsController < ApplicationController
def create

@board = Board.find(params[:board_id])
@boardthread = @board.boardthreads.new(params[:boardthread])
@boardthread.user = current_user
@boardthread.save
redirect_to board_path(@board)

end
end

最佳答案

这是因为当你失败时,你在你的embedded_form 中再次构建了一个对象。您需要在表单中使用失败的对象。

在您的新操作中,您需要构建您的对象并在您的embedded_form 上使用它。在你创建的过程中你会使用它,因为它已经定义了

<%= form_for([@board, @boardthread]) do |f| %>
<% @boardthread.errors.full_messages.each do |msg| %>
<p><%= msg %></p>
<% end %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<div class="actions"> <%= f.submit %> </div>
</div>
<% end %>

关于ruby-on-rails - rails 3 : How to display error messages in embedded form?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3803180/

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