尝试创建任务时出现参数错误

时间:2019-06-19 02:14:21

标签: ruby-on-rails-5 argument-error

我有一个用于使用管理员帐户创建新任务的表单。每个任务都链接到一个帐户。当我访问admin / missions / new时,出现错误“ Admin :: Missions#new中的ArgumentError”。谁能指出我做错了什么?

当我检查Rails控制台时,确实显示了任务ID和名称,但我想我缺少任务的管理员。

这是我的控制器

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 :(得分:0)

在新操作中您还没有参数,因为在控制器代码之后呈现了视图(必须收集参数的表单所在的视图)。该对象应在 create 操作中创建:

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

新动作应该是:

def new
  @mission = current_account.missions.new
end

检查Binding a Form to an Object section of the Rails guide

格式代码似乎也有误,因为form_with [:admin, @mission] do |f|不是有效的语法。应该是:

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

检查form_with documentation了解更多详细信息。

答案 1 :(得分:0)

理想情况下,新方法仅用于创建新实例,而create方法用于保存记录。更改为Ana Maria建议的内容即可解决您的问题。谢谢。