我试图从控制器和活动管理员重写控制器执行它,我无法使其工作。Rails 3 Active Admin将预设值添加到新记录
用户创建一个网站。 CURRENT_USER有一个id属性 网站上有一个user_id的属性
所以,当我创建一个新的网站,我想将current_user.id加入到website.user_id。我不能。
任何人都知道如何?
现在我需要它在新建/创建操作上,但我可能也需要编辑/更新操作。
我试图从控制器和活动管理员重写控制器执行它,我无法使其工作。Rails 3 Active Admin将预设值添加到新记录
用户创建一个网站。 CURRENT_USER有一个id属性 网站上有一个user_id的属性
所以,当我创建一个新的网站,我想将current_user.id加入到website.user_id。我不能。
任何人都知道如何?
现在我需要它在新建/创建操作上,但我可能也需要编辑/更新操作。
这似乎为我工作:
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'方法只是创建一个空的@website对象。你的“新”的方法应该创建空的对象,然后用户的值初始化为当前用户:
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
见https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/resource_dsl.rb#L156
不要忘了“控制”的定义,我忽略了它在这个答案。 –