Я пытаюсь гнездо Sections
в Page
в моем тренировочном коде, и я получаю эту ошибку:NoMethodError в SectionsController # индекс пытаются гнездиться
undefined method `sections' for nil:NilClass
Перед этим я вложенными в Subjects
мой Page
успешно.
См. Ошибку на рисунке ниже, пытаясь вложить разделы в страницу.
Вот что я сделал:
sections_controller.rb:
class SectionsController < ApplicationController
layout 'admin'
before_action :confirm_logged_in
before_action :find_page
def index
@sections = @page.sections.sorted
end
private
def find_page
if params[:page_id]
@page = Page.find(params[:page_id])
end
end
end
Мой Вид:
index.html.erb:
<% @page_title = 'Sections' %>
<%= link_to('<< Back to Pages', {:controller => 'pages', :action => 'index', :subject_id => @page.subject_id}, :class => 'back-link') %>
<div class="sections index">
<h2>Sections</h2>
<%= link_to('Add New Section', {:action => 'new', :page_id => @page.id, :page_id => @page.id}, :class => 'action new') %>
<table class="listing" summary="Section list">
<tr class="header">
<th> </th>
<th>Page</th>
<th>Section</th>
<th>Content Type</th>
<th>Visible</th>
<th>Actions</th>
</tr>
<% @sections.each do |section| %>
<tr>
<td><%= section.position %></td>
<td><%= section.page.name if section.page %></td>
<td><%= section.name %></td>
<td><%= section.content_type %></td>
<td class="center"><%= status_tag(section.visible) %></td>
<td class="actions">
<%= link_to('Show', {:action => 'show', :id => section.id, :page_id => @page.id}, :class => 'action show') %>
<%= link_to('Edit', {:action => 'edit', :id => section.id, :page_id => @page.id}, :class => 'action edit') %>
<%= link_to('Delete', {:action => 'delete', :id => section.id, :page_id => @page.id}, :class => 'action delete') %>
</td>
</tr>
<% end %>
</table>
</div>
С какой страницы вы пытаетесь вызвать действие 'index' вашего контроллера раздела? То есть ссылку, которую вы нажали, прежде чем вы получили эту ошибку. Можете ли вы показать нам свой код для ссылки? –
@SunnyK, я вызываю его непосредственно по своему маршруту с помощью этого URL-адреса. http://127.0.0.1:3000/sections –
Если я удалю все вложения, его работы. Как CMS, я вставляю разделы в страницу, чтобы иметь только связанную запись в моей CMS. Позвольте мне вставить код без вложенности, который работал после того, как я http://127.0.0.1:3000/sections –