2011-09-26 65 views
8

我试图从控制器和活动管理员重写控制器执行它,我无法使其工作。Rails 3 Active Admin将预设值添加到新记录

用户创建一个网站。 CURRENT_USER有一个id属性 网站上有一个user_id的属性

所以,当我创建一个新的网站,我想将current_user.id加入到website.user_id。我不能。

任何人都知道如何?

现在我需要它在新建/创建操作上,但我可能也需要编辑/更新操作。

回答

12

这似乎为我工作:

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 

您应该能够覆盖在相同的方式与其他控制器的动作。

4

您需要为控制器添加一个'新'方法。 '新'方法创建一个空的网站对象,将被传递给表单。默认的'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 
+0

不要忘了“控制”的定义,我忽略了它在这个答案。 –