ActiveRecord 产生双重消息
Posted
技术标签:
【中文标题】ActiveRecord 产生双重消息【英文标题】:ActiveRecord producing double messages 【发布时间】:2018-12-01 05:00:47 【问题描述】:脚手架生成的这段代码最终打印了两次相同的消息,我无法让它停止。
def update
respond_to do |format|
if @indi.update(indi_params)
puts("message about to be shown to us by the system")
format.html redirect_to @indi, notice: 'Indi was successfully updated.'
format.json render :show, status: :ok, location: @indi
else
format.html render :edit
format.json render json: @indi.errors, status: :unprocessable_entity
end
end
end
它在网页中打印两次成功消息。
【问题讨论】:
在你的网页视图中你是否渲染了两次通知 不是故意的。这是服务器的一些控制台输出。系统将向我们显示消息 重定向到localhost:3000/indis/48 已完成 302 发现 5ms (ActiveRecord: 0.0ms) 开始 GET "/indis/48" ... IndisController 处理#show as HTML 参数: "id" =>“48”用户负载(0.0ms)选择“用户”。*从Indi负载(0.0毫秒)选择“indis”。*从“indis”到“indis”。“id”=?限制 ? [["id", 48]... 渲染 indis/show.html.erb w/in layouts/application 渲染 indis/show.html.erb w/iin layouts/application [此代码在 application.html.erb 视图顶部有 所以你做了两次,对吧。我在警报成功以及 top of view 中都看到了它。这不是双重渲染的问题吗? 【参考方案1】:结束问题:
问题在于布局和视图的双重渲染。他有:
<body>
<% if notice %>
<p class="alert alert-success"><%= notice %></p>
<% end %>
<% if alert %>
<p class="alert alert-danger"><%= alert %></p>
<% end %>
<%= yield %>
</body>
在show.html.erb
的顶部:
<p id="notice"><%= notice %></p>
这导致了notice
的双重显示。修复是简单地从show.html.erb
中删除并在布局中使用它。布局使得这样的代码可以被重用
【讨论】:
以上是关于ActiveRecord 产生双重消息的主要内容,如果未能解决你的问题,请参考以下文章
ruby 使用多态数据库模型自动创建Active Record关联:http://api.rubyonrails.org/classes/ActiveRecord/Associat
导致弃用警告的原因是:ActiveRecord :: Base.raise_in_transactional_callbacks =?
SQL 基准测试:PHP ActiveRecord ORM 与 MySQL 与 CodeIgniter Active Record 与标准 PHP