ruby on rails 中间表额外字段如何操作?

Python011

ruby on rails 中间表额外字段如何操作?,第1张

1.使用 text_field_tag :num controller里 取得中间表对应得那条(之后称为 xxx) update_attribute('num',params[:num])

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可以指定类型,提供这一下这几种类型