Как исправить "неопределенный метод` errors 'для nil: NilClass "? - PullRequest
0 голосов
/ 19 сентября 2018

Я изучаю книгу "Agile_Web_Development_with_Rails_5", затем в главе кода "Оформить заказ!"У меня есть эта ошибка.

NoMethodError in Orders#new

Showing /home/chiencong/depot/app/views/orders/_form.html.erb where line #2 raised:

undefined method `errors' for nil:NilClass

    <%= form_with(model: order, local: true) do |form| %>
       <% if order.errors.any? %>
         <div id="error_explanation">
           <h2><%= pluralize(order.errors.count, "error") %> prohibited this order from being saved:</h2>

           <ul>

Trace of template inclusion: app/views/orders/new.html.erb

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018
def edit
 @order = Order.find(...)
 # put byebug(install gem before) here and check why your variable is empty
end
0 голосов
/ 19 сентября 2018

Прежде всего, вы комментируете код неправильно, вы должны комментировать представление кода ruby ​​следующим образом

<%#= pluralize(order.errors.count, "error") %>

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

def new
  @order = Order.new
end

В методе редактирования

 def edit
   @order = Order.find(id)
 end

Теперь вы можете получить доступ к @order при просмотре, поэтому замените order.errors на @ order.errors

Надеюсь, это поможет вам:)

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