继续使用上一个项目
1.新建model student teacher ctrl+alt+g -> scaffold
class CreateStudents < ActiveRecord::Migration
def change
create_table :students do |t|
t.string :name
t.integer :age
t.references :teacher, index: true
t.text :remark
t.timestamps
end
end
end
class CreateTeachers < ActiveRecord::Migration
def change
create_table :teachers do |t|
t.string :name
t.integer :age
t.text :remark
t.timestamps
end
end
end
2.安装simple_form wice_grid
#forms
gem 'simple_form', :git => 'git://github.com/plataformatec/simple_form.git'
#grid
gem 'wice_grid'
3.执行bundle install
4.生成simple_form wice_grid 配置文件
rails generate simple_form:install
rails g wice_grid:install
5.在application.js和application.css引入样式
//= require wice_grid
*= require wice_grid
6.simple_form wice_grid 的i18n,新建文件config/locales/zh-CN.activerecord.yml
zh-CN:
activerecord:
models:
person: 人员
department: 部门
student: 学生
teacher: 老师
attributes:
errors:
models:
person:
attributes:
email:
blank: 请填写电子邮箱
password:
blank: 请填写密码
too_short: 密码长度要多于8位
reset_password_token:
invalid: 这个链接已经失效的,请用最新的链接
simple_form:
labels:
defaults:
remark: 备注
created_at: 创建时间
updated_at: 更新时间
attachment: 附件
cu_attachment: 已有附件
peoson:
name: 姓名
age: 年龄
sex: 性别
deaprtment: 所属部门
phone: 电话
department:
name: 部门名称
parent: 上级部门
remark: 备注
student:
name: 姓名
age: 年龄
teacher: 所属教师
remark: 备注
teacher:
name: 姓名
age: 年龄
remark: 备注
log:
handler: 姓名
handle_type: 操作类型
content: 记录
remark: 备注
date:
order:
- :year
- :month
- :day
wice_grid:
show_filter_tooltip: 显示过滤
hide_filter_tooltip: 隐藏过滤
csv_export_tooltip: 输出CSV档
filter_tooltip: 过滤
reset_filter_tooltip: 清除过滤
boolean_filter_true_label: "是"
boolean_filter_false_label: "否"
previous_label: «
next_label: »
# Title of the icon clicking on which will show the calendar to set the FROM date.
date_selector_tooltip_from: 从
# Title of the icon clicking on which will show the calendar to set the TO date.
date_selector_tooltip_to: 至
# The title of the checkox to turn on negation
negation_checkbox_title: 排除
# link to switch to show all records
show_all_records_label: 显示全部
# tooltip for the link to switch to show all records
show_all_records_tooltip: 显示全部记录
# Warning message shown when the user wants to switch to all-records mode
all_queries_warning: 确定要显示全部记录?
# link to paginated view
switch_back_to_paginated_mode_label: 回到分页显示
# tooltip for the link to paginated view
switch_back_to_paginated_mode_tooltip: 切换到分页显示
# Title of the date string.
date_string_tooltip: 按下以清除
saved_query_panel_title: 查询存储
save_query_button_label: 储存查询状态
saved_query_deletion_confirmation: 确定删除?
saved_query_deletion_link_title: 删除查询
saved_query_link_title: 读取查询
validates_uniqueness_error: 已存在相同名称的查询
validates_presence_error: 请为此查询命名
query_deleted_message: 查询已删除
query_saved_message: 查询已储存
select_all: 全选
deselect_all: 全清
7.使用simple_form显示form表单,修改views/students/_form.html.erb
<%= simple_form_for(@student, html: {class: 'form-horizontal',id: 'student_form' }) do |f| %>
<%= f.error_notification %>
<div class="row-fluid">
<div class="form-inputs">
<%= f.input :name, required: true, input_html: {required: true, autofocus: true} %>
<%= f.input :age %>
<%= f.association :teacher, collection: @teachers, include_blank: false, required: true %>
<%= f.input :remark, as: :text %>
</div>
</div>
<div class="form-actions">
<%= f.button :submit, class: 'btn btn-primary' %>
</div>
<% end %>
8.修改studnets_controller中方法
class StudentsController < ApplicationController
before_action :set_student, only: [:update, :destroy]
before_action :before_show_edit, only: [:show, :edit]
# GET /students
# GET /students.json
def index
@students = initialize_grid(Student.select("students.*, teachers.name AS teacher_name").joins(:teacher), order: 'id', order_direction: 'asc', per_page: 2)
end
# GET /students/1
# GET /students/1.json
def show
end
# GET /students/new
def new
@student = Student.new
@teachers = Teacher.all
end
# GET /students/1/edit
def edit
@teachers = Teacher.all
end
# POST /students
# POST /students.json
def create
@student = Student.new(student_params)
respond_to do |format|
if @student.save
format.html { redirect_to @student, notice: 'Student was successfully created.' }
format.json { render action: 'show', status: :created, location: @student }
else
format.html { render action: 'new' }
format.json { render json: @student.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /students/1
# PATCH/PUT /students/1.json
def update
respond_to do |format|
if @student.update(student_params)
format.html { redirect_to @student, notice: 'Student was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @student.errors, status: :unprocessable_entity }
end
end
end
# DELETE /students/1
# DELETE /students/1.json
def destroy
@student.destroy
respond_to do |format|
format.html { redirect_to students_url }
format.json { head :no_content }
end
end
def before_show_edit
@student = Student.select("students.*, teachers.name AS teacher_name").joins(:teacher).find(params[:id])
end
private
# Use callbacks to share common setup or constraints between actions.
def set_student
@student = Student.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def student_params
params.require(:student).permit(:name, :age, :teacher_id, :remark)
end
end
9.使用wice_grid展示student列表,修改views/students/index.html.erb
<h1>Listing students</h1>
<div id="students">
<%= grid(@students, show_filters: :when_filtered) do |g|
g.column name: '编号', attribute: 'id', ordering: true, filter: false
g.column name: "#{t 'simple_form.labels.student.name'}", attribute: 'name'
g.column name: "#{t 'simple_form.labels.student.age'}", attribute: 'age'
g.column name: "#{t 'simple_form.labels.student.teacher'}", attribute: 'teacher_id' do |c|
c.teacher_name if c.teacher
end
g.column name: "#{t 'simple_form.labels.student.teacher'}", attribute: 'name', model: Teacher do |c|
c.teacher.name
end
g.column name: "#{t 'simple_form.labels.student.remark'}", attribute: 'remark'
g.column do |c|
grid_operator(:student_path, c.id)
end
end %>
</div>
<br>
<%= link_to 'New Student', new_student_path %>
10.修改helpers/application_helper.rb文件
module ApplicationHelper
#表格的操作列
#path:地址
#id: id
#do_*: 分别控制是否显示 查看,编辑和删除
def grid_operator(path, id, do_show = true, do_edit = true, do_delete = true)
show, edit, delete = '', '', ''
show = link_to send(path, id), class: [:btn, 'btn-mini', 'btn-success'], title: "#{t 'common.show'}" do
raw "<i class='icon-search bigger-120'></i>"
end if do_show
edit = link_to send("edit_#{path.to_s}", id), class: [:btn, 'btn-mini', 'btn-info'], title: "#{t 'common.edit'}" do
raw "<i class='icon-edit bigger-120'></i>"
end if do_edit
delete = link_to send(path, id), confirm: '确认删除?', method: :delete, title: "#{t 'common.delete'}",class: [:btn, 'btn-mini', 'btn-danger'] do
raw "<i class='icon-trash bigger-120'></i>"
end if do_delete
return raw(show+" "+edit+" "+delete)
end
end
11.修改config/application.rb,使用i18
# config.i18n.default_locale = :de
config.i18n.default_locale = 'zh-CN'
12.执行rake命令 db:migrate ,启动服务器
13.在views/people/index.html.erb中添加student列表的链接
<br>
学生列表<%= link_to 'student_list', students_path %>
<br>
教师列表<%= link_to 'teacher_list', teachers_path %>
14.显示效果
form表单---simple_form
list表单---wice_grid
15.更多信息请查看
simple_form
wice_grid
16.项目源码将在以后得文章中给出。
分享到:
相关推荐
带有 simple_form 和 bootstrap3 的 Rails 表单生成器 安装 将此行添加到应用程序的 Gemfile 中: gem 'simple_form_bootstrap3' 或这一行: gem 'simple_form_bootstrap3', git: '...
gem 'simple_form_wysihtml' 并执行: $ bundle 或者自己安装: $ gem install simple_form_wysihtml 要使其工作,您需要在application.js要求 javascripts : //= require simple_form_wysihtml 您可以选择...
简单表格扩展 此gem将自定义常用输入类型添加到简单形式。 可用输入 可以使用以下定制的简单表单输入: 布尔值 collection_check_boxes ...rails generate simple_form_extension:install 添加到您
rails generate simple_form:install 引导程序 简单表格可以轻松地集成到。 为此,您必须在安装生成器中使用bootstrap选项,如下所示: rails generate simple_form:install --bootstrap 您必须确保在应用程序上...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
"simple_form_unique"是一个工具,它允许我们在使用Simple Form这个流行的Ruby on Rails表单构建器时,为输入字段添加“唯一性”验证。这个功能在创建或编辑表单时特别有用,可以即时检查数据库中是否存在与新输入...
在client_side_validations-simple_form之前,需要simple_form和client_side_validations 。 JavaScript文件 说明取决于您的技术堆栈。 使用Webpacker时 确保您需要jQuery和客户端验证。 添加以下
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
"inspinia admin - v2.5 Rails_Full_Version" 是一个基于Rails框架构建的后台管理系统的完整版本。这个系统采用流行的Inspinia Admin模板,提供了丰富的功能和自定义选项,旨在帮助开发者快速构建高效、现代且用户...
这是一个基于 Rails 的简单消息传递应用程序。 使用此应用程序,您将拥有 a hand rolled user system and the users will have the ability to message each other ... cd simple_rails_messaging_tutorial 捆
在Rails_Full_Version压缩包中,包含了完整的源代码和必要的资源文件,开发者可以通过解压并导入到Rails项目中,按照官方文档进行配置和定制。同时,这个版本可能还包含了升级记录、更改日志和可能的bug修复,以保证...
Simple Form使用`simple_form_for`辅助方法代替`form_for`,它能生成更加简洁的代码。例如,创建一个基于模型的表单,只需一行代码: ```ruby <%= simple_form_for @user do |f| %> ``` 这将自动生成包含...
《Ruby on Rails应用程序测试指南》深入解读 一、为何为Rails应用编写测试? 在《Ruby on Rails Guides_ A Guide to Testing Rails Applications.pdf》这一指南中,开篇即强调了为Rails应用编写测试的重要性。...
Api-rails5_api_tutorial.zip,了解如何在michael hartl的rails 5教程上构建一个现代api立即在rails应用程序中构建一个api!(Rails 5版本),一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...
Ruby on Rails Guides_ A Guide to Active Record Associations.pdf
rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...
《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...
该应用程序是一个演示Rails应用程序,显示了如何使用Simple_form nd Bootstrap 4应用程序与Cocoon一起工作。 使用Ruby 2.6.6版和Rails 5.2.4版进行设置。 它还使用PG数据库应用程序,因此需要一个工作的Postgresql...