@mirbook

Почему не отображается содержимое вьюхи на rails?

Layouts
app/views/layouts/admin.html.erb:
<!DOCTYPE html>
<html>
  <head>
    <title>Shop</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'admin', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'admin', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
   <%= render "shared/main_menu" %>
  </body>
</html>


Контроллеры
app/controllers/admin/base_controller.rb
class Admin::BaseController < ApplicationController
	layout 'admin'
end


app/controllers/admin/text_zones_controller.rb
class Admin::TextZonesController < Admin::BaseController
  before_action :set_text_zone, only: [:show, :edit, :create, :update]

  def index
    @text_zones = TextZone.all
  end

  def show
  end

  def new
    @text_zone = TextZone.new
  end

  def edit
  end

  def create
    if @text_zone.save
      redirect_to edit_text_zone_path(@text_zone), notice: 'Текстовая зона добавлена.'
    else
      render action: :new
    end
  end

  def update
    if @text_zone.update_attributes(params[:text_zone])
      redirect_to edit_text_zone_path(@text_zone), notice: 'Текстовая зона успешно обновлена'
    else
      render action: :edit
    end
  end

  def destroy
    @text_zone.destroy
    redirect_to text_zone_index_path, notice: 'Текстовая зона успешно удалена'
  end

private

  def set_text_zone
  @text_zone = TextZone.find(params[:id])
  end
end


app/views/admin/text_zones/index.html.erb
<h1>Текстовые зоны</h1>

<div class="container">
  <div class="row">
    <div class="col-sm-4">
      <h3>Название</h3>
      <p>Lorem ipsum dolor..</p>
      <p>Ut enim ad..</p>
    </div>
    <div class="col-sm-4">
      <h3>Отображается</h3>
      <p>Lorem ipsum dolor..</p>
      <p>Ut enim ad..</p>
    </div>
    <div class="col-sm-4">
      <h3>Описание</h3> 
      <p>Lorem ipsum dolor..</p>
      <p>Ut enim ad..</p>
    </div>
  </div>
</div>


routes.rb
Rails.application.routes.draw do

  root to: "application#index"

  namespace :admin do
  	root to: 'main#index'
  	get 'main/index'
  	
  	resources :text_zones
  end
end


Все вроде прописано контроллер и модель сгенерил через rails g, консоль показывает:
HtVEHk-NR6OuLfEwM7UzZQ.png
При переходе на страницу localhost:3000/admin/text_zones только срендерено меню из app/views/shared/main_menu:
uxKfgBBSSxWdLev4t2Y2bQ.png

а где все остальное содержимое из app/views/admin/text_zones/index.html.erb ?
  • Вопрос задан
  • 52 просмотра
Решения вопроса 2
потому что в admin.html нету вывода шаблона из контроллера
в app/views/layouts/admin.html.erb надо добавить
<%= yield %>
Вместо yield будет рендериться содержимое из шаблона

<!DOCTYPE html>
<html>
  <head>
    <title>Shop</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'admin', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'admin', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
   <%= render "shared/main_menu" %>
   <%= yield %>
  </body>
</html>
Ответ написан
@IvanVP
Надо в app/views/layouts/admin.html.erb:
после
<%= render "shared/main_menu" %>
добавить
<%= yield %>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы