Formtastic

1. 安装Gem包

gem 'formtastic'
$ rails g formtastic:install

在application.css中添加

*= require formtastic 
*= require my_formtastic_changes

2. 新建Model

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.text :name
      t.string :desc

      t.timestamps null: false
    end
  end
end

3. 使用

<%= semantic_form_for @user do |f| %>
  <%= f.inputs :name, :desc, :created_at %>
  <%= f.actions :submit, :cancel %>
<% end %>

自动识别类型(时间如下)


shijian.png

4. 更常用

<%= semantic_form_for @user do |f| %>
  <%= f.inputs '基本信息', :id=>'basic_info' do %>
    <%= f.input :name, :as => :string %>
    <%= f.input :desc %>
    <%= f.input :created_at %>
  <% end %>
  <%= f.actions do %>
    <%= f.action :submit, :as => :button %>
    <%= f.action :cancel, :as => :link %>
  <% end %>
<% end %>
<%= f.inputs :name => '基本信息', :id=>'basic_info' do %> 修改id
<%= f.input :name, :label=>'姓名' ,:as => :string %>       更改label

inputs可以设置一些常用的参数

  • :name 设置标签
  • :id 设置html的id

input可以设置一些常用的参数

  • :as ->(:radio, :string, :select, :check_boxes, :boolean, :datalist)
  • :label 设置字符串
  • :hint 设置字符串
  • :required (false true)
  • :input_html 设置Hash =>{:size=>10, :class=>'autogrow'}
  • :wrapper_html 设置Hash=> { :style => "display:none;" },给input一 个<li>标签包围。

action可以设置属性

  • :button_html 设置Hash

5. 对象嵌套

新建一个Modal,Article。

class CreateArticles < ActiveRecord::Migration
  def change
    create_table :articles do |t|
      t.string :title
      t.text :content
      t.integer :user_id
      t.timestamps null: false
    end
  end
end

建立关联

class User < ActiveRecord::Base
  has_many :articles
  accepts_nested_attributes_for :articles
end
class Article < ActiveRecord::Base
  belongs_to :user
end

view中显示

<%= semantic_form_for @user do |f| %>
  <%= f.inputs :name => '基本信息', :id=>'basic_info' do %>
    <%= f.input :name, :label=>'姓名' ,:as => :string %>
    <%= f.input :desc, :as => :string %>
    <%= f.input :created_at %>
  <% end %>
###############嵌套属性##########################
  <%= f.semantic_fields_for :articles do |article| %>
    <%= article.inputs :title %>
    <%= article.inputs :content %>
    <!-- <%= article.inputs :title, :content, :name=>'文章' %>-->
  <% end %>
###############嵌套属性##########################
  <%= f.actions do %>
    <%= f.action :submit, :as => :button %>
    <%= f.action :cancel, :as => :link %>
  <% end %>
<% end %>

6. 设置命名空间控制id

<%= semantic_form_for(@post, :namespace => 'cat_form') do |f| %>
 <%= f.inputs do %>
   <%= f.input :title %> # id="cat_form_post_title"
   <%= f.input :body %> # id="cat_form_post_body"
   <%= f.input :created_at %> # id="cat_form_post_created_at"
 <% end %>
 <%= f.actions %>
 <% end %>

7. 其他嵌套

<%= f.input :articles, :as => :radio, :collection => @user.articles.all %>

8. 其他input

  • :select
  • :check_boxes
  • :radio
  • :time_zone
  • :password
  • :text
  • :date_select
  • :datetime_select
  • :time_select
  • :boolean
  • :string
  • :number
  • :file
  • :country
  • :email
  • :url
  • :phone
  • :search
  • :hidden
  • :range
  • :datalist
  • :image_upload

9. 本地化

使用顺序

  1. :label
  2. Formtastic i18n
  3. Activerecord i18n
  4. label_str_method

10. 小知识

<%= semantic_form_for(@post, :namespace => 'cat_form') do |f| %>
  <% f.object %> <!-- 获取对象 -->
<% end %>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,510评论 18 139
  • 1.从载入EasyUI开始 读者需要到EasyUI官网中下载包含原文件和demo的压缩包,并解压到之前编写的代码目...
    老皮丘阅读 1,688评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,513评论 18 399
  • 有茶,有阳光,有你们。健康欢乐的一天
    手砭姑苏毛毛阅读 235评论 0 0
  • 没有谈过恋爱,只在青春时与一个男生暧昧,以为互相喜欢,于是懵懂的年纪大胆回报的是误会,从此不再主动。 不知道是不是...
    微笑渐暖阅读 171评论 0 2