登录 主页

rails--访问项目首页

2023-07-07 10:16AM

访问项目首页

先在命令行中运行(记着在要访问项目的目录下eg:  /workspace/library ) bunlde exec rails server

然后打开浏览器 , 访问 localhost:3000 , 能看到首页 .( 这个页面是存在于 gem文件中的 . 在 library 目录下找不到它 )现在只有结构 .没有内容,所以需要增加内容 , 例如: 输入一个网址 , 显示一个页

假设 , 用户需要访问的 URL: localhost:3000/books/list

那么, 我们只需要 :

1. 修改-路由 (router)

2. 创建对应的 (controller, action)

3. 创建对应的页面 (erb)

1. 修改路由 config/routes.rb(路由文件)

向该文件中 , 增加下面的代码 :

Rails.application.routes.draw do
  # 可以生成/books
  resources :books do
    collection do
      # 可以对应好(处理)/books/list这个链接
      # 下面这个路由,让rails可以处理URL:/books/list这个链接,
      # 不过处理这个链接有个前提,这个链接发起的请求方式是使用get请求发起的
      get :list
    end
  end
end

(resources ... do ... end )

它会生成一段”路由” , 也就是说 , 会识别 /books/list 这个 URL,并且把它交给 books controller的list action 来处理

2. 创建 controller/action(controller要在app 目录下)
新建一个controller文件: app/controllers/books_controller.rb

向该文件增加下面的代码:

class BooksController < ApplicationController
  
  # 创建对应的action,因为要求访问它的list,所以在这里给它加上list的action
  def list
  end
end

( 一个 controller 是由多个 action( 也就是普通方法组成的 )不用的 action, 处理不同的url .

这个 list action 里没有任何代码 . 它会直接跳转到对应的 erb 页面 ( app/views/books/list.html.erb)

class BooksController < ApplicationController
  
  # 创建对应的action,因为要求访问它的list,所以在这里给它加上list的action
  def list
    # 1.渲染一段字符串
    # render :text => 'hihihi'
    # 2.渲染一个json
    # render :json => {
    #   key: 'value'
    #   name: 'Tom'
    #   sex: 'male'
    #  }
    # 3.啥也不写,就渲染对应的 app/views/books/list.html.erb
  end
end

3. 创建对应的视图文件
新建一个视图文件: app/views/books/list.html.erb
( 所有 books controller 中的视图 , 都要放到 app/views/books目录下 )

(对应的controller是什么名字,views/后面就用什么名字, eg: Bookscontroller, 就是views/books

(action叫什么名字 , 视图就叫什么名字,list action, 对应.的视图 , 就是 : list.html.erb)

erb文件里面可以添加html的内容,例如下面代码:

<p>三体1 - 地球往事</p>
<p>三体1 - 黑暗森林</p>
<p>三体3 - 死神永生</p>

为了简单起见 , 它只显示 HTML 代码 .访问浏览器,看到页面结果

4. 在视图中 , 使用 ruby 代码 .
修改 app/views/books/list.html.erb的内容,例如下面代码

<h3>注意:以下使用了RUBY代码来显示HTML</h3>

<!-- 先定义了一个数组<% books = [] %> -->
<% books = ['三体1 - 地球往事', '三体2 - 黑暗森林', '三体3 - 死神永生'] %>
<!-- 使用了一个循环 -->
<% books.each do |book| %>
  <!-- 打印出来 -->
  <p><%= book %></p>
<% end %>
 
<a href='/books/new'>新建图书页</a>                                      

可以看到 , 语法与PHP, JSP一样
● <% %> 之间来执行 ruby代码
● <%= %>来显示返回值

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论