目前对CodeAcademy上的ROR进行了介绍,目前为止的流程如下:
这似乎是一个基本的问题,但我现在更了解,然后继续前进,没有一个明确的核心基础。
发布于 2017-01-21 03:49:54
默认情况下,Rails将在路由中指定的控制器名称中查找视图,该视图的名称与控制器操作的名称相同。
因此,在Pages控制器下有了 home操作,这将导致Rails进入home操作,然后根据操作中的代码呈现视图。
但是,您可以始终指定要在控制器操作中呈现的视图。它最好有一个类似的名称,因为它避免了未来的混乱。
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操作中呈现完全不同的视图。
class PagesController < ApplicationController
def home
# renders app/view/books/home.html.erb
render 'books/home'
end
end发布于 2017-01-20 20:35:32
按照惯例。你甚至可以这样做:
# 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也只是呈现视图。
https://stackoverflow.com/questions/41771805
复制相似问题