Ошибка аргумента при попытке создать миссию - PullRequest
0 голосов
/ 19 июня 2019

У меня есть форма для создания новых миссий с учетной записью администратора.Каждая миссия связана с учетной записью.Когда я посещаю admin / missions / new, я получаю ошибку «ArgumentError in Admin :: Missions # new».Кто-нибудь может указать на то, что я делаю неправильно?

Когда я проверял консоль rails, появляется идентификатор и имя миссии, но я предполагаю, что мне не хватает администратора для миссии.

Вот мой контроллер

class Admin::MissionsController < Admin::ApplicationController
  def index
    @missions = missions
  end

  def new
    @mission = current_account.missions.new(params[:mission])

    @mission.save

  end

  def create
    render plain: params[:mission].inspect
  end


  def edit
    @mission = missions.find(params[:id])
  end




  private

  def missions 
    @missions ||= current_account.missions
  end
end

Вот моя форма

<%= form_with [:admin, @mission] do |f| %>
  <div>
    <label>Name</label>
    <%= f.text_field :name %>
  </div>

  <div>
  </div>

  <div>
    <%= f.submit %>
  </div>

<% end %>

Я ожидаю, что URL-адрес admin / missions / new доставит меня в форму, но я неправильно понимаю аргументколичество аргументов (дано 1, ожидается 0)

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

В идеале новый метод предназначен только для создания нового экземпляра, а метод create - для сохранения записей.Изменение того, что предлагает Ана Мария, должно решить вашу проблему.Спасибо.

0 голосов
/ 19 июня 2019

У вас еще нет параметров в новом действии, поскольку представление (где находится форма, которая должна собирать параметры) отображается после кода контроллера.Объект должен быть создан в действии create :

def create
  current_account.missions.create(params[:mission])
end

И новое действие должно быть просто:

def new
  @mission = current_account.missions.new
end

Проверьте Привязка формы к разделу Object руководства Rails .

Код формы также неверен, поскольку form_with [:admin, @mission] do |f| не является допустимым синтаксисом.Это должно быть:

<%= form_with model: [:admin, @mission] do |form| %>

Проверьте form_with документацию для более подробной информации.

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