ruby-on-rails-5 - 将变量传递给方法 info_for_paper_trail
问题描述
在表版本中,我创建了新列 'localip' 。在视图中,我有通过 JS 放置价值的隐藏字段:
<%= f.hidden_field :localIP, :value => params[:localIP] %>
如果我理解正确,则首先调用 paper_trail,因此我将其放入控制器中:
prepend_before_action :set_localip, only: :update
def info_for_paper_trail
{
:ip => request.remote_ip,
:agent => request.user_agent,
:localip => @localip
}
end
private
def set_localip
@localip = params[:localIP]
end
但在更新期间:localip 未通过:
PaperTrail::Version Create (0.3ms) INSERT INTO "versions" ("item_type", "item_id", "event", "whodunnit", "object", "created_at", "object_changes", "ip", "agent") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
有人知道如何传递这样的价值吗?
解决方案
解决了:
在控制器中:
prepend_before_action :set_localip, only: :update
before_action :set_paper_trail_whodunnit, if: :user_signed_in?
def info_for_paper_trail
{
:ip => request.remote_ip,
:agent => request.user_agent,
:localip => @localip
}
end#
private
def set_localip
@localip = params.require(:commission)[:localIP]
end
/config/initializers/paper_trail.rb
module PaperTrail
class Version < ::ActiveRecord::Base
belongs_to :user, foreign_key: :whodunnit
end
end
推荐阅读
- sql - 选择每个月的最大日期
- google-cloud-vision - 使用 Google vision api 对盒子内的字符进行 Ocr
- android - 如何在 RadCalendar Day Cell 中设置事件文本的字体大小
- flutter - URL 启动器在某些 Android 设备中无法与 Flutter Web 一起使用
- xamarin.forms - 单击 ListView ViewCell 时的 Xamarin.Forms 背景颜色更改为橙色,但未初始化为颜色
- c# - AspNetUserManager:添加和删除用户时出现跟踪错误
- filter - 过滤树或嵌套数据
- php - index.html 文件故障
- sqlite - 是否有任何选项可以运行 SQLite Flutter 以进行 Web 构建?
- angular - 方法响应的输入值 null wating