【发布时间】:2021-10-06 04:40:26
【问题描述】:
我正在 Rails 中开发问题跟踪器。我正在尝试以表格形式保存问题。关系是一个项目有很多问题。我在浏览器中收到以下错误:
ActionController::ParameterMissing in IssuesController#create
param is missing or the value is empty: issue
在终端上的服务器上:
Started POST "/issues/new" for ::1 at 2021-07-30 09:42:20 -0400 Processing by IssuesController#create as HTML Parameters: {"authenticity_token"=>"[FILTERED]", "title"=>"Proj3", "summary"=>"Test3", "description"=>"Test3", "status"=>"complete", "commit"=>"Save "} Completed 400 Bad Request in 1ms (Allocations: 833)
这是表格:
<%= form_with model: @issue, :url => new_issue_path do |form| %>
<p><%= form.label :New_Issue %></p>
<h5>Project Title: </h5>
<% titles = [] %>
<% Project.all.each do |project| %>
<% titles << project.title%>
<% end %>
<p><%= form.select :title, titles %></p>
<h5>Summary: </h5>
<p><%= form.text_area :summary, size: "15x3" %></p>
<h5>Description: </h5>
<p><%= form.text_area :description, size: "30x5" %></p>
<h5>Status: </h5>
<p><%= form.text_area :status, size: "10x2" %></p>
<%= form.submit %>
<% end %>
这是控制器的一部分:
def issue_params
params.require(:issue).permit(:summary, :description, :status)
end
def create
# create issues and attach them to the project found by title
Project.find_by_title(params[:title]).issues.create!(
summary: params[:summary],
description: params[:description],
status: params[:status])
redirect_to issues_url
end
提前致谢!
【问题讨论】:
-
form_with 助手中的 url 错误。它应该发布到 create 方法,而不是控制器中的 new 方法。而不是 new_issue_path,它应该是 issues_path。除了@Joel Blum 下面关于强参数的评论。我不明白为什么 IssueController#create 正在处理 new_issues_path,可能路由中有错误。此外,收到的参数应具有格式 {issue: {summary: "text", status: "text" etc.}}。
标签: ruby-on-rails ruby database forms erb