2.使用 text_field :xxx, :num controller里 xxx.update_attributes(params[:xxx])
3.model中定义 accept_nest_attributes :xxx
view中 form里
<% f.field_for :xxx do |xxx| %>
<%= xxx.text_field :num %>
<% end %>
基于文本文档(Markdown) 设想好需要的基本需要的表、字段、类型;使用 Rails Migration 随着功能的开发逐步创建表;
随着细节功能的开发、需求,逐步增加字段,删除字段,或者调整字段类型;
第一个 Release 的时候清理 Migrations 合并成一个
随着后期的改动,逐步增加、修改、删除字段或表。
基本上我的所有项目都是这么搞的,这和项目是否复杂无关。
所以我前面为什么说思路需要转变。
github: https://github.com/activeadmin/activeadmin官方文档: https://activeadmin.info/index.html
devise是用于登录验证
由于我们使用devise,所以我们需要运行这个构造器
执行后会创建这些文件
终端执行
activeAdmin 会在seeds.rb中生成默认用户的创建方式,终端执行下面命令来生成后台用户
然后就可以访问了,会让你登录,就用刚生成的用户的信息
initializer/active_admin
因为不需要comment(注解)这个功能,所以在initializer中的active_admin中关闭这个功能
config.comments = false
在右上角有一些快速导航按钮,默认的有两个,一个是当前的admin用户,另外一个是登出按钮,我们可以增加导航按钮
eg: Post是我的一个model
执行后会生成app/admin/post.rb文件
使用permit_params方法来定义哪些属性可以被修改,如果修改了没有被permit_params定义的属性,修改不会生效
默认的,所有的CRUD的actions都可以操作,如果要禁用其中的某些操作,用如下定义:
一个resource默认都会在全局导航栏上,如果要禁止一个resource出现在全局导航栏上,我们可以用:
menu有4个选项可以用:
:label - 指定该menu的名称
:parent -指定一个顶级菜单
:if -指定一个条件
:priority - 默认为10,在全局导航栏上的位置
config/initializers/active_admin.rb
提供4中样式,Block,Blog,Grid,Table,一般我们用的是table,也是默认的样式。这里只介绍table.
默认的,index页面会展示对应的model的所以字段,可供查看,修改,删除。
如果要自定义字段,可以用:
这些自定的字段要被index包裹
selectable_column 显示勾选框,用于批量操作
column 显示什么字段,该字段必须是model的字段名,可以给这个字段另取一个别名
还可以根据条件设置特别的row样式,这个some_style样式放在app/asset/stylesheets/active_admin.scss中
如果要给resource设置链接到查看,修改,删除这几个按钮,可以用actions方法
也可以增加自定的链接
获取重新设置链接
默认的表单是展示所有的字段
示例:
对应的图示:
link_to path 中的path指定的方式是
Index Filter 过滤器
一般的,通过上面这个形式就好了,activeadmin会自动判断其类型。
或者有另个情况,有个关联表。
通过:as可以指定类型,提供这一下这几种类型