Rails - введенные данные не отображаются - PullRequest
0 голосов
/ 17 февраля 2020

Скорее всего, это новый вопрос ie ... В настоящее время я работаю над своим первым проектом rails и хочу решить пару проблем.

Вот видео а также ссылка Github .

Как отобразить запись после ее ввода на странице? Как получить список записей для отображения?

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

undefined local variable or method `comicbook' for #<#<Class:0x00007fb1d23d3728>:0x00007fb1d23d18b0>
Did you mean?  comicbooks
---
        <th>Squad</th>
    </tr>
    <% render partial: 'comicbooks/comicbook', locals: {comicbook: comicbook }%>
</table>

comicbooks_controller.rb

class ComicbooksController < ApplicationController
  def index
    @comicbooks = Comicbook.all
  end

  def create
    @comicbook = Comicbook.new(comicbook_params)
    if @comicbook.save
      redirect_to comicbooks_url
    else
      @errors = @comicbook.errors.full_messages
      render :new
    end
  end

  def new
    @comicbook = Comicbook.new
    @comicbook.person = Person.new
    @comicbook.squad = Squad.new
  end

  def edit
    unless @comicbook = Comicbook.find_by_id(params[:id])
      @error = ['Comicbook Not Found']
      redirect_to comicbooks_url
    end
  end

  def update
  end

  def comicbook_params
    params.require(:comicbook).permit(:title, :person_attributes => [:name], :squad_attributes => [:name])
  end
end

1 Ответ

0 голосов
/ 17 февраля 2020

В вашем представлении _all_comicbooks.html.erb не создано ни одной переменной, которая является моим предположением для этой ошибки. Вам нужно l oop просмотреть данные, чтобы получить это как в индексном файле. Итак, в вашем индексном файле у вас есть эта строка

<% @comicbooks.each do |comicbook| %>
   <% render partial: 'comicbook', locals: {comicbook: comicbook }%>
<% end %>

Итак, есть переменная @comicbooks, которая проходит по циклу, и отдельные переменные для каждого элемента устанавливаются в |comicbook|. Посмотрите, как это работает?

Не создавая l oop и указав, что это за переменная, вы просто вызываете переменную, которая не существует.

После того, как вы посмотрели, похоже, что вы отправляете переменную в партиал, называемую comicbooks, которая представляет собой всех людей, или отряды, комиксы, так что l oop через это и создайте переменную comicbook.

Итак, я думаю, вы хотите это в представлении _all_comicbooks.html.erb

<table>
  <tr>
    <th>Comicbook</th>
    <th>Hero</th>
    <th>Squad</th>
  </tr>
  <% comicbooks.each do |comicbook| %>
    <%= render partial: 'comicbooks/comicbook', locals: {comicbook: comicbook }%>
  <% end %>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...