Не удается обновить данные в форме базы данных - PullRequest
1 голос
/ 05 февраля 2020

Я получаю ошибку - неопределенный метод collect для nil:NilClass, но я могу отобразить список параметров из другой таблицы базы данных, а также сохранить данные в таблице этапов, но не могу их обновить. Я отображаю таблицу ответственности формы списка параметров в поле ответственности поля формы этапа и сохраняю этот параметр в таблице этапов.

enter image description here

stage_controller.rb

  def index
    redirect_to project_path(@project)
  end

  def show
  end


  def new
    @stage = Stage.new
    @responsibilities = @project.responsibilities
  end

  def edit
  end

  def create
      @responsibilities = @project.responsibilities

    @stage = @project.stages.build(stage_params)

    respond_to do |format|
      if @stage.save
        format.html { redirect_to project_path(@project), notice: 'Stage was successfully created.' }
        format.json { render :show, status: :created, location: @stage }
      else
        format.html { render :new }
        format.json { render json: @stage.errors, status: :unprocessable_entity }
      end
    end
  end


  def update
    @responsibilities = @project.responsibilities

    respond_to do |format|
      if @stage.update(stage_params)
        format.html { redirect_to project_stages_url, notice: 'Stage was successfully updated.' }
        format.json { render :show, status: :ok, location: @stage }
      else
        format.html { render :edit }
        format.json { render json: @stage.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @stage.destroy
    respond_to do |format|
      format.html { redirect_to project_stages_url, notice: 'Stage was successfully deleted.' }
      format.json { head :no_content }
    end
  end

  private
    def set_stage
      @stage = Stage.find(params[:id])
    end

    def find_project
      @project = Project.find(params[:project_id])
    end

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

ваш метод редактирования пуст, поэтому у @responsibility нет содержимого (ноль), например, вы можете поместить некоторый код (из вашего другого метода)

def edit
  @project = Project.find(params[:id])
  @responsibilities = @project.responsibilities
  ...
end
0 голосов
/ 05 февраля 2020

Проблема здесь в том, что @responsibilities не определено в вашей части.

Вы должны передать локальную переменную в частичное, как это -

<%= render partial: "form", locals: {responsibilities: @ responsibilities} %>

, а затем вы можете использовать responsibilities внутри form partial

Подробнее о передаче переменной в партиалы

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