2011-08-21 101 views
0

我做過rails g controller World並創建了一個新的佈局,也稱爲world。我現在有app/views/world/index.html.erb。這是我WorldControllerRails noob問題:使用不同的佈局渲染視圖

class WorldController < ApplicationController 
    before_filter :login_required 

    layout "world" 

    def show 
    #?? 
    end 

end 

我不知道要放什麼東西在我的高清節目,這樣我可以導航到localhost:3000/world/index,並有views/world/index頁面呈現。任何幫助,將不勝感激。

回答

1

顯示引用的路線中的行動,而不是「顯示它」的命令。相反,您需要定義index操作。

def index 
end 

如果這不起作用..有可能是路由問題。向我們顯示config/routes.rb

+0

好的,我添加了'def index @msgs = current_user.all_msgs.paginate(:per_page => 10,:頁=> PARAMS [:頁]) @last_msg = current_user.msgs.last 端 DEF顯示 @user = User.find_by_username(PARAMS [:用戶名]) @msg = @ user.all_msgs end'但現在我得到了'nil:NilClass'的undefined方法'all_msgs',但同樣的def show在我的其他視圖中工作? – user852974

+0

你可以顯示application_controller.rb或者current_user和login_required被定義的任何地方嗎? – natedavisolds

0

您的控制器以單數名稱命名爲「World」。這通常意味着你的「世界」資源是單一的。即只有一個世界(世界不多)。如果是這樣的話,就不會有「索引」。您可以定義路線是這樣的:

resource :world 

- which would give you the route 

/world - mapped to WorldsController#show 

這是假定資源是奇異的,而且只有一個世界。所以你不需要一個id到#show它,因爲它假設只有一個存在(並且可以在沒有標識符的情況下找到)。

如果你想多個世界,您可以定義您的路線:

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定義您的路線。在後一種情況下,沒有索引方法(因爲有一個單一的世界,不需要索引)