Ошибка при повторной визуализации _form.html.erb после неудачной проверки в Ruby on Rails 5 - PullRequest
0 голосов
/ 13 сентября 2018

Мое приложение управляет бизнес-правилами, которые применяются к одному бизнес-объекту.При редактировании бизнес-правила я сталкиваюсь с автоматической ошибкой.

Представление _form.html.erb правильно отображает текущие свойства, включая раскрывающееся поле:

<%= f.collection_select :business_object_id, @business_objects_list, :id, :name  %>

Отображается текущее значение, доступнозначения отображаются в раскрывающемся списке.

При применении модификации (не связанной с этим раскрывающимся списком), которая не проходит проверку, Rails пытается отобразить _form.html.erb, но выдает ошибку из-за отсутствия @business_objects_list:

неопределенный метод `map 'для nil: NilClass

@ business_objects_list создается в закрытом разделе контроллера бизнес-правил:

    # Retrieve business objects list
    def set_business_objects_list
      if action_name == 'edit'
        my_business_area = @business_rule.business_process.business_flow.business_area_id
      else
        my_business_area = BusinessProcess.find(params[:business_process_id]).business_flow.business_area_id
      end
      @business_objects_list = BusinessObject.where("business_area_id = ?", my_business_area)
end

Функция set_business_objects_list вызывается в верхней части контроллера:

 before_action :set_business_objects_list, only: [:new, :edit]

РЕДАКТИРОВАТЬ: Действия контроллера

  # GET /business_rules/1/edit
  def edit
    ### Retrieved by Callback function
  end

  # PUT /business_rules/1
  # PUT /business_rules/1.json
  def update
    ### Retrieved by Callback function
    @business_rule.updated_by = current_user.user_name

    respond_to do |format|
      if @business_rule.update_attributes(business_rule_params)
        format.html { redirect_to @business_rule, notice: 'Business rule was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @business_rule.errors, status: :unprocessable_entity }
      end
    end
end

Не могли бы вы помочь выяснить, что здесь не так??Спасибо!

1 Ответ

0 голосов
/ 13 сентября 2018

неопределенный метод `map 'для nil: NilClass

Вам необходимо также сделать @business_objects_list доступным для действия update, поскольку render action: "edit" просто загружает edit.html.erb,Таким образом, область действия @business_objects_list потеряна

Решение:

Просто добавьте действие update в список действий к before_action :set_business_objects_list

before_action :set_business_objects_list, only: [:new, :edit, :update]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...