活动管理员:仅自定义新表单

Mic*_*win 41 ruby ruby-on-rails activeadmin

我正在使用Active Admin为某些模型提供管理员.我需要为其中一个提供自定义的新表单,但将编辑表单保留为Active Admin提供的默认表单.这就是我所拥有的.它的工作原理是它给了我想要的新表单,但编辑表单也使用了新表单,这不是我想要的:

ActiveAdmin.register Document do
  form :partial => 'form'
end
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它给出了一个错误,'new'是一个未定义的方法:

ActiveAdmin.register Document do
  new do
    form :partial => 'form'
  end
end
Run Code Online (Sandbox Code Playgroud)

小智 88

如果您只想隐藏或显示新表单上的某些字段(例如,您使用before_create在模型中自动生成的字段),则可以执行以下操作:

form do |f|
    f.inputs "Member Details" do
        f.input :first_name
        f.input :last_name
        f.input :email
        if !f.object.new_record?
            f.input :password
            f.input :password_confirmation
        end
    end
    f.button :Submit
end
Run Code Online (Sandbox Code Playgroud)

如果在第一次创建成员时自动生成密码,则会在创建新成员时隐藏密码字段.

  • `f.object.new_record?`对我很有用! (8认同)

Mic*_*win 10

我已经找到了一种在视图中使用某些逻辑来实现它的方法.当然,这不是最好的方式,但是在找到更好的方法之前,它会做我想做的事情.这是我正在使用的逻辑:

<% if controller.action_name == 'new' %>
new form
<% else %>
edit form
<% end -%>
Run Code Online (Sandbox Code Playgroud)