Ruby on rails 3 Rails 3活动管理员向新记录添加预设值
我已经试着从控制器和主动管理覆盖控制器来做这件事,但我无法让它工作 用户创建一个网站。 当前用户具有id属性 网站具有用户id属性 因此,当我创建一个新网站时,我想将当前的\u user.id添加到website.user\u id中。我不能 有人知道怎么做吗Ruby on rails 3 Rails 3活动管理员向新记录添加预设值,ruby-on-rails-3,activeadmin,Ruby On Rails 3,Activeadmin,我已经试着从控制器和主动管理覆盖控制器来做这件事,但我无法让它工作 用户创建一个网站。 当前用户具有id属性 网站具有用户id属性 因此,当我创建一个新网站时,我想将当前的\u user.id添加到website.user\u id中。我不能 有人知道怎么做吗 现在,我在新建/创建操作中需要它,但在编辑/更新操作中可能也需要它。这似乎对我有用: ActiveAdmin.register Website do controller do # Do some custom stuff
现在,我在新建/创建操作中需要它,但在编辑/更新操作中可能也需要它。这似乎对我有用:
ActiveAdmin.register Website do
controller do
# Do some custom stuff on GET /admin/websites/*/edit
def edit
super do |format|
# Do what you want here ...
@website.user = current_user
end
end
end
end
您应该能够以相同的方式覆盖其他控制器操作。您需要向控制器添加一个“新”方法。“new”方法创建一个将传递给表单的空网站对象。默认的“new”方法只是创建一个空的@website对象。“新建”方法应创建空对象,然后将user的值初始化为当前用户:
ActiveAdmin.register Website do
controller do
# Custom new method
def new
@website = Website.new
@website.user = current_user
#set any other values you might want to initialize
end
end
请参见不要忘记“控制器”的定义,我在回答中忽略了它。
ActiveAdmin.register Model do
# also look in to before_create if hidden on form
before_build do |record|
record.user = current_user
end
end