zoukankan      html  css  js  c++  java
  • Cloud 9 Adapt Project on Heroku (Week V)

    Advanced Software Engineering

    Week V

    --------------- 写在前面 -------------------------

    https://moonsea.herokuapp.com/

    附上链接,这个是要实现的功能

    -------------------------------------------------------------

    根据老师上课的要求,强烈建议更换到Cloud 9, 因为是SaaS时代,所以只好从原来的Local转换到Cloud,用起来体验还不错,只是各种环境都需要重新配置,比较烦。还好,有了之前的Blog,配置起来也不是什么难事.接下来就是git clone项目,修改源码。

    1.从github同步源码

    1 git clone https://github.com/zsmjzlb/zsmjzlb.git

    2.进入源码,进行bundle install

    1 cd zsmjzlb
    2 bundle install

    这时候,可能会出现各种问题,最常见的就是提示缺少某个依赖包,只需要根据提示进行安装即可,可以参照"Some Problems about Gem"。

    3.install之后,进行数据库迁移

    1 rake db:migrate
    2 rake db:seed

    4.数据库迁移之后,运行

    因为是在cloud 9 上,所以使用如下命令

    1 rails s -p $PORT -b $IP

    -------------------------修改要求-------------------------------

    功能1.实现标题点击排序(点击,正序;再点击,逆序)

    功能2.实现标题点击变黄

    功能3.加入复选框,实现选择查询功能

    ------------------------进入正题---------------------------------

     因为ruby on rails 是采用MVC框架的一种系统,所以实现一个功能,一般需要从M(model)、V(view)、C(controller)三个层次进行修改实现。

    =============  功能1 =======================

    (1)首先,V(view)层,修改页面前端显示效果,在”index.html.haml“文件中给标题(title、release date)添加链接,实现点击排序功能

     1  %thead
     2     %tr
     3     - if @selectsort == "title"
     4       %th.hilite= link_to "Movie Title", movies_path(:selectsort=>"title", :sort=>@sorted, :ratings=>params[:ratings])
     5     - else
     6       %th= link_to "Movie Title", movies_path(:selectsort=>"title", :sort=>@sorted, :ratings=>params[:ratings])
     7     %th Rating
     8     - if @selectsort == "release_date"
     9       %th.hilite= link_to "Release Date", movies_path(:selectsort=> "release_date", :sort=> @sorted, :ratings=> params[:ratings])
    10     - else
    11       %th= link_to "Release Date", movies_path(:selectsort=> "release_date", :sort=> @sorted, :ratings=> params[:ratings])
    12     %th More Info

    (2)然后,C(controller)层,在“movies_controller.rb”文件中,添加排序的功能,因为两次点击排序不同,所以加入flag(sorted),sorted =1 逆序,sorted =0 顺序

     1 def index
     2     @movies = Movie.all
     3     
     4     @sorted = 0
     5     @selectsort = "waitparams"
     6     if params[:selectsort]
     7       @selectsort = params[:selectsort]
     8       @movies = @movies.sort_by{|movie| movie[@selectsort]}
     9       if params[:sort].to_i == 1
    10         @movies = @movies.reverse
    11         @sorted = 0
    12       else
    13         @sorted = 1
    14       end
    15     end
    16   end

    (3)M(model)层,这个功能没有用到model层,所以不需要修改

    (4)保存,使用如下命令运行访问即可。

    1 rails s -p $PORT -b $IP

    =============== 功能2 ==========================

    实现标题点击变黄,是由css样式来实现的。

    因为在功能1中,是通过"th.hilite"来实现点击排序功能,所以只需要在css文件中,将这个标签的背景颜色变成黄色就可以。"default.ss"文件中加入如下代码:

    1 table#movies th.hilite {
    2     background-color: yellow
    3 }

    ============= 功能3 =============================

    实现不同ratring等级的选择查询

    (1)首先,V(view)层,在“index.html.haml”页面中加入如下代码

    1 -# checkbox
    2 =form_tag movies_path, :method => :get do 
    3   Rating Rank:
    4   - @all_ratings.each do |rating|
    5     = rating
    6     = check_box_tag "ratings[#{rating}]","1",(@ratings.include? rating)
    7   = check_box_tag "ratings[hidden]","1",true,hidden:true
    8   = submit_tag "Refresh"

    (2)然后,C(controller)层,在“movies_controller.rb”文件的index函数中,加入如下代码

    1 @all_ratings = Movie.ratingcollection
    2     if params[:ratings]
    3       @ratings = params[:ratings].keys
    4     else
    5       @ratings = @all_ratings
    6     end
    7     
    8     @movies = Movie.where(rating: @ratings)

    (3)最后,M(model)层,在“movie.rb”文件中,实现查询功能,代码如下:

    1 def Movie.ratingcollection
    2         ratingcollect = Array.new
    3         i = 0
    4         Movie.select(:rating).distinct.each do |movie|
    5             ratingcollect[i] = movie.rating
    6             i += 1;
    7         end
    8         return ratingcollect.sort
    9     end

    (4)保存,运行访问即可。

    至此,要求功能就全部实现了。

    接下来,将project部署到Heroku,步骤参考“Deploy One Project on Heroku (Week IV)”。

  • 相关阅读:
    vs2010装虚拟机后启动慢
    LINUX FIFO(读书笔记,LINUX程序设计第四版)
    WPF控件 ProgressBar
    C# SQLite操作示列
    win10下使用Linux命令
    类初始化与实例化过程
    结构与类 Delphi
    多线程应用 Delphi
    (珍藏)SQL Server中常用的SQL语句
    获取当前用户本地应用程序设置文件夹 Delphi
  • 原文地址:https://www.cnblogs.com/moonseazj/p/4964159.html
Copyright © 2011-2022 走看看