Rails noob问题:渲染具有不同布局的视图

时间:2011-08-21 02:21:19

标签: ruby-on-rails ruby layout view controller

我做了rails g controller World并创建了一个名为world的新布局。我现在有app/views/world/index.html.erb。这是我的WorldController

class WorldController < ApplicationController
  before_filter :login_required

  layout "world"

  def show
    #??
  end

end

我不知道在def show中放入什么内容,以便我可以导航到localhost:3000/world/index并让views/world/index页面呈现。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

显示是指路径中的操作,而不是“显示”的命令。相反,您需要定义index操作。

def index
end

如果这不起作用..可能存在路由问题。显示config / routes.rb

答案 1 :(得分:0)

您的控制器以单数形式命名为“World”。这通常意味着您的“世界”资源是单一的。即只有一个世界(世界不多)。如果是这样的话,就没有“索引”。您可以像这样定义路线:

resource :world

- which would give you the route

/world - mapped to WorldsController#show

这假定资源是单一的,并且只有一个世界。所以你不需要#show它的id,因为它假设只有一个存在(并且可以找到没有标识符)。

如果你想要多个世界,你可以用以下方式定义你的路线:

resources :worlds

- and you'd end up with the routes:

/worlds    - mapping to WorldsController#index
/world/:id - mapping to WorldsController#show

我想重点是,有多个世界吗?如果有,请使用resources :worlds定义您的路线。如果只有一个世界,请使用resource :world定义您的路线。在后一种情况下,没有索引方法(因为只有一个World,不需要索引)