作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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/
我是一名优秀的程序员,十分优秀!