Rails noob вопрос: рендеринг вида с другим макетом - PullRequest
0 голосов
/ 21 августа 2011

Я сделал 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-шоу, чтобы я мог перейти к localhost:3000/world/index и получить страницу views/world/index. Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 21 августа 2011

Показывать относится к действию на маршруте, а не к команде «показать его». Вместо этого вам нужно определить действие index.

def index
end

Если это не работает .. возможно, есть проблема с маршрутизацией. Покажите нам config / rout.rb

0 голосов
/ 21 августа 2011

Ваш контроллер называется «Мир» в единственном числе.Как правило, это означает, что ваш ресурс "Мир" является единственным.То есть существует только один мир (не много миров).Если это так, не было бы «индекса».Вы можете определить маршрут следующим образом:

resource :world

- which would give you the route

/world - mapped to WorldsController#show

Это предполагает, что ресурс является единственным, и существует только один мир.Таким образом, вам не нужен идентификатор для #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.В последнем случае нет метода индекса (так как существует один мир, без индекса)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...