首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ROR应用程序如何在往返行程中选择使用哪个视图?

ROR应用程序如何在往返行程中选择使用哪个视图?
EN

Stack Overflow用户
提问于 2017-01-20 20:25:22
回答 2查看 32关注 0票数 1

目前对CodeAcademy上的ROR进行了介绍,目前为止的流程如下:

  1. 创建ROR应用程序,
  2. 通过在PagesCotnroller类中创建一个方法来修改Controller。
  3. 修改路线,将“欢迎”请求指向“pages#home”控制器/方法。
  4. (这是我感到困惑的地方,他们说:好吧,现在是时候修改视图(home.html.erb)了.在文件夹x/y/z中找到它,但是在这个流程中,这个项目特别选择了home.html.erb文件和另一个视图。对于这个测试项目,文件夹中没有其他视图文件,但是如果其中有20个呢?我在代码中看到了步骤2和步骤3,那么4呢?

这似乎是一个基本的问题,但我现在更了解,然后继续前进,没有一个明确的核心基础。

课程链接:https://www.codecademy.com/courses/learn-rails/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-21 03:49:54

默认情况下,Rails将在路由中指定的控制器名称中查找视图,该视图的名称与控制器操作的名称相同。

因此,在Pages控制器下有了 home操作,这将导致Rails进入home操作,然后根据操作中的代码呈现视图。

但是,您可以始终指定要在控制器操作中呈现的视图。它最好有一个类似的名称,因为它避免了未来的混乱。

代码语言:javascript
复制
PagesController < ApplicationController
  def home
    if five_min_window_is_still_open_after_creation?
      # you need to have app/views/pages/show_with_edit.html.erb
      render 'show_with_edit'
    elsif timeup?
      # you need to have app/views/pages/show_without_edit.html.erb
      render 'show_without_edit'
    # else 
      # it will render app/views/pages/home.html.erb
    end
  end
end

您也可以在pages_controller.rb的home操作中呈现完全不同的视图。

代码语言:javascript
复制
class PagesController < ApplicationController
 def home
  # renders app/view/books/home.html.erb
  render 'books/home'
 end
end
票数 0
EN

Stack Overflow用户

发布于 2017-01-20 20:35:32

按照惯例。你甚至可以这样做:

代码语言:javascript
复制
# config/routes.rb
get `welcome`, to: 'pages#home'

# app/controllers/pages_controller.rb
class PagesController
end

# views/pages/home.html.erb
<h1>Hello world</h1>

因为rails是由约定高于配置哲学驱动的,所以它可以假设视图位于pages/home.html.{erb|slim|haml}中。如果在那里找不到视图,它会在查找树上查找views/home.html.{erb|slim|haml}。在这种情况下,即使控制器中没有操作,ActionController::Base也只是呈现视图。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41771805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档