ruby-on-rails - 使用field_for时RecordInvalid的麻烦,即使属性存在也验证失败?
问题描述
我目前正在开发一个关于 Rails 6.0 和 Ruby 2.5 的网站。简而言之,该网站旨在将需要帮助的人与可以提供帮助的人联系起来,并附上所需帮助的描述。
这个问题有 3 个相关模型person_in_need
,district
和help
。一个person_in_need
has_manyhelps
和 belongs_to 一个district
。一个help
belongs_to one district
,一个district
has_many helps
。
下面是与他们需要的person_in_need
一起注册新的表格。help
<%= form_with model: @person_in_need, url: persons_in_need_index_path do |form| %>
<%= form.label :name %>
<%= form.text_field :name%>
<br>
<%= form.label :phone_number %>
<%= form.phone_field :phone_number %>
<br>
<%= form.fields_for :helps do |help_form| %>
<%= help_form.label :districts_id %>
<%= help_form.grouped_collection_select :districts_id, State.order(:name), :districts, :name, :id, :name, include_blank: true %>
<br>
<%= help_form.label 'What kind of help do you need?' %>
<%= help_form.select :help_type, options_for_select(Help.help_types.keys), include_blank: true %>
<%= help_form.label 'Describe' %>
<%= help_form.text_area :description %>
<% end %>
<%= form.submit 'Post' %>
<% end %>
控制器
class PersonsInNeedController < ApplicationController
def new
@person_in_need = PersonInNeed.new
@person_in_need.helps.new
end
def create
@person_in_need = PersonInNeed.create!(person_in_need_params)
@person_in_need.helps.first.person_in_need_id = @person_in_need.id
if @person_in_need.save
redirect_to root_path
else
redirect_to new_persons_in_need_path
end
end
private
def person_in_need_params
params.require(:person_in_need).permit(:name, :phone_number, helps_attributes: [:help_type, :description, :districts_id])
end
end
以下是日志
Parameters: {"authenticity_token"=>"eUmMHFVFcpRsO7cGzP2nJ/MAkM/Q6IDA/oPUrWNL1bBox53MqGLnAtklO1s6FVppoX3c8E1IADAGND+Q/74FwA==", "person_in_need"=>{"name"=>"Sar", "phone_number"=>"012345", "helps_attributes"=>{"0"=>{"districts_id"=>"Dungun", "help_type"=>"food", "description"=>"need rice"}}}, "commit"=>"Post"}
ActiveRecord::RecordInvalid (Validation failed: Helps district must exist):
当我尝试保存数据时,它会在日志中返回上述错误,我怀疑这可能与我如何在 grouped_select_form 中命名我的对象有关,但玩弄它没有效果。我可以看到该区域在日志中,那为什么它说它不存在?谢谢阅读!
解决方案
通读 Rails 文档后,我添加validates_presence_of :user
到我的帮助模型中并解决了问题。
推荐阅读
- android - 我正在尝试使用此代码从应用程序的资产中共享 pdf 但它显示错误
- reactjs - 我可以在片段上使用指令并有条件地调用其变量吗?
- flutter - 我可以通过 Flutter Widget 实现视频播放器吗?
- php - PHP API json_encode 编码不响应 MySQL 查询
- java - PDFBox2 的 Unicode 字体书写问题(U+0053 没有字形)
- c++ - 不产生值的表达式的示例是什么?
- javascript - 在javascript中将IST日期格式转换为YYYY-MM-DD
- mysql - 在两个表中查找最小值和最大值之间的对值 MySQL Query
- mysql - Mysql INSTR 帮助仅搜索匹配更多文本的 1 行
- python-2.7 - 在分页 18 页而有 42 页要抓取的情况下获得“抓取 324 页(以 133 页/分钟),抓取 304 个项目(以 130 项/分钟)”?