尝试创建任务时出现参数错误
Argument error when trying to create a mission
我有一个用于使用管理员帐户创建新任务的表格。每个任务都链接到一个帐户。当我访问 admin/missions/new 时,出现错误 "ArgumentError in Admin::Missions#new"。谁能指出我做错了什么?
当我检查 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)
您在新操作中还没有参数,因为视图(必须收集参数的表单所在的位置)是在控制器代码之后呈现的。该对象应在 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 了解更多详情。
理想情况下,新方法仅用于创建新实例,而创建方法用于保存记录。更改为 Ana Maria 建议的内容应该可以解决您的问题。谢谢。
我有一个用于使用管理员帐户创建新任务的表格。每个任务都链接到一个帐户。当我访问 admin/missions/new 时,出现错误 "ArgumentError in Admin::Missions#new"。谁能指出我做错了什么?
当我检查 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)
您在新操作中还没有参数,因为视图(必须收集参数的表单所在的位置)是在控制器代码之后呈现的。该对象应在 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 了解更多详情。
理想情况下,新方法仅用于创建新实例,而创建方法用于保存记录。更改为 Ana Maria 建议的内容应该可以解决您的问题。谢谢。