2016-05-30 10 views
0

Приложение Ruby on Rails всегда отображает представление layouts/application.html.erb вместо представлений, в которых я хочу. У кого-нибудь есть идея, почему это может быть так? Мои маршруты файл выглядит следующим образом:Rails aways отображает application.html.erb вместо желаемых просмотров.

Rails.application.routes.draw do 
    root 'startup#index' 
    resources :users 
    end 

И мой application_cotroller.rb довольно много пустой:

class ApplicationController < ActionController::Base 
     protect_from_forgery with: :exception 
    end 
+0

отметить нужный макет в контроллере, как это: 'макета«my_layout'' и имеют макет, созданный в 'приложение/просмотров/layuts/my_layout.html. erb'. – sahil

+0

можете ли вы поместить свой код 'layouts/application.html.erb' в свой вопрос? Вы положили '<%= yield %>' там, где вы хотите, чтобы ваши представления отображались? – floum

+0

№. Большое спасибо. часть урожая отсутствовала :) – MaryLu

ответ

2

По умолчанию действие контроллера в Rails делает шаблон представления для ваших действий, завернутым в макете (который application/layout)

ActionView :: TemplateHandlers управляет поиск для расширения (.html.erb, .html.haml, .json.erb и т.д ...)

так, в индексе действий называется, вы получите этот неявный вызов, если вы звоните render себя:

def edit 
    # your code 
    render action :'edit', layout: 'application/layout' # implicitly called 
end 

Rails будет начать обработку Вашего макета и поместить содержимое вашего шаблона редактирования на месте любого yield в ваш макет. Таким образом, типичный макет будет выглядеть следующим образом:

<!doctype html> 
<head> 
</head> 
<body> 
    <!-- layout content before view --> 

    <%= yield %> 

    <!-- layout content after view --> 
</body> 
Смежные вопросы