企业汇报系统细节追加(三)

来源:互联网 发布:mysql命令区分大小写吗 编辑:程序博客网 时间:2024/05/16 08:23
一/Ajax请求

  得到文档查询结果后,不跳转页面,将页面刷新重新显示查询结果即可。

  1>在对应<div></div>模块中有如下语句:

    <form class="form-inline"  action="/doc/query_search" method="post" style="margin-top:10px;margin-bottom:10px;width:100%;float:left" data-remote="true"> #重

点是红色字体部分,提交之后进入query_search方法,将查询条件保存到@docssss。

    <div id="table_list"> #此处也可使用<div class="table_lis">

        <%= render(:partial => 'table_list',:object => @docssss)%> #局部模板块,

    </div>

  2>views/doc新建文件_table_list.html.erb,存放模板页面要显示的东西

   <table class="table table-hover" >

   ......

   </table>

  3>在query_search.js.erb文件调用html()方法:

    $("#table_list").html("<%=j(render :partial=>'table_list', :locals=>{:object=>@docssss})%>") #html方法将render的数据重新加载更新,若上面使用<div

class="table_lis">,此处则用$(".table_list")

  4>render的几种传值方式:具体内容见http://guides.rubyonrails.org/v3.2/layouts_and_rendering.html 

   4.1 render nothing:

       render:nothing=> true

   4.2 render an acion's view

    a, render"edit":传递视图名。

       b, render :edit:用对象传值。

    c, render:action=> "edit" :传递动作。

   4.3 render an action's template from another controller

    a,render'products/show' :传递完整的方法路径。

     b,render:template=> 'products/show' :传递具体方法路径。

    c,render:template=> 'products/show' :传递任意一个文件。

     4.4 render an arbitrary file

    render"/u/apps/warehouse_app/current/app/views/products/show"

     render :file =>"/u/apps/warehouse_app/current/app/views/products/show" :传递具体的文件路径。

     4.5 render text

     render:text=> "OK"

   4.4 render JSON

     render:json=> @product

   4.5 render  xml

      render:xml=> @product

   4.6 render vanilla javascript

       render :js => "alert('Hello Rails');"

二/级联删除,用destroy做删除不仅会当前的数据,还会处理关联的信息 和callback,而delete只把当条数据删除 不会走callback 和 关联的信息

  1>在company.html.erb文件中定义删除方法如下:

    def delete

           @company = Company.find(params[:id])

           @com_id = @company.pre_id

           @company.destroy


           redirect_to "/company/index?id=#{@com_id}"

       end

  2>在models/company.rb定义表单之间的依赖关系:

    class Company < ActiveRecord::Base

       attr_accessible :name, :pre_id

       has_many :docs, :class_name => "Doc", :foreign_key=>"com_id",:dependent => :destroy

       has_many :users, :class_name => "User",:foreign_key=>"com_id", :dependent => :destroy

       # has_many :child_companies, :class_name => "Company", :dependent => :destroy


    end

    注意:不能对自己有has_many的关系绑定,就像不能说我有很多个我一样。

  3>在models/doc.rb定义表单之间的依赖关系如下:

   class Doc < ActiveRecord::Base

              attr_accessible :com_id, :content, :title, :comment, :doc_status, :publish_time, :p_user_id, :exmaine_status, :e_user_id, :c_user_id, :exmaine_time

        # validates :title, :content, presence: true,uniqueness: true

        belongs_to :company, :class_name => "Company",:foreign_key => "com_id"


   end

  注意:有外键的一定要写上外键

  4>在models/user.rb定义表单之间的依赖关系如下:

    class User < ActiveRecord::Base

       attr_accessible :com_id, :name, :password, :user_type

       validates :name, presence: true,uniqueness: true

       validates :password, presence: true

       validates :com_id, presence: true

       validates :user_type, presence: true

       has_many :operationlogs

       belongs_to :company,:foreign_key=>"com_id"

    end


附加--代码规范要点:

1. 缩进

  缩进两个空格或者软tab = 2个空格,每个block的开始和结束要对齐

    def method_a

    [两个空格]code

    end

  代码一眼看过去就应该看到代码属于哪个层级或者代码块中


2. 空格问题

  = == => + - * /两侧都要有一个空格,是一个不是2个或者多个,定义method的时候def method_a(a, b, c) 逗号后面加一个空格。调用的时候同理。 不要参数都堆到一起。数组的初始化的时候也是一样a = [1, a, b]


3. 写注释的时候不要用beginend

  多行的话# comment1

    # comment2

    # ….

  #后面有一个空格


4.空行问题

  一个方法中,有好几个逻辑片段的话,可以每个片段直接加一个空行,这样更清晰。两个方法之间要加一个空行


5.代码实现要加注释

 #doc start

 #name:index

 #desp:显示用户登录页面

 #params:none

 #coder:liming

 #releasetime:2015.11.23

 #updatetime:2015.11.29

 #doc end


修改于第四周周日

第二次修改于第六周周二

  

0 0
原创粉丝点击