我希望我能很好地理解你的問題,但是你希望在用戶保存一個對象後調用一個方法嗎?我過去這樣做過:
class Employee < ApplicationRecord
has_many :downtimes
# A getter used to populate the field on rails admin
def downtime_reason
downtimes.last.reason
end
# A setter that will be called with whatever the user wrote in your field
def downtime_reason=(reason)
downtimes.find_or_create_by(reason: reason)
end
rails_admin do
configure :downtime_reason, :text do
virtual?
end
edit do
field :downtime_reason
end
end
end
我不會建議搞亂rails管理員控制器。但是,如果你一定要和你想改變後的參數,你總是可以做:
class ApplicationController
before_action :modify_params if: :in_admin_controller?
def modify_params
params[:something] = 'your brand new value'
end
def in_admin_controller?
params[:controller] == 'rails_admin/main'
end
end
這取決於軌管理控制器從應用控制器繼承,在最新版本(1.2.0)軌道管理員這可能是在初始化程序中配置像這樣:
#/config/initializers/rails_admin.rb
RailsAdmin.config do |config|
config.parent_controller = '::ApplicationController'
end
發佈一些代碼,以便我們可以看到什麼是錯的。 –
說實話,我不確定我會發布什麼代碼。我沒有收到錯誤。我更想知道是否有辦法將方法寫入rails-admin的保存操作中。如果有相關部分的代碼,你會建議我會很高興發佈我已經有的 –
嘗試發佈你的表單代碼和控制器代碼。 –