模型:帖子和用户
Post belongs_to :user
用户 has_many :posts
简单的。
假设存在一些用户,我们访问帖子的编辑页面。
<%= form_for @post do |f| %>
...
<% User.all.each do |user| %>
<div><%= f.radio_button "user_id", user.id %></div>
<% end %>
...
Post 的控制器利用 Rails 4 强大的参数。
params.require(:post).permit(:user_id)
假设编辑帖子表单只有单选按钮作为字段。
问题:抛出 ActionController::ParameterMissing 异常。未找到参数:发布
原因是 Post params 哈希从未创建,导致上述异常被抛出。与空文本字段不同,空单选按钮不会触发创建模型的参数散列。
如果 Post 模型要求 user_id 有效怎么办?当然有人会想再次渲染视图,原因是无法保存帖子。
问题:在遵守 Rails 约定的同时处理这种情况的优雅方法是什么?
更新:
进一步集思广益,我相信可能还有很多其他情况会产生这个问题;它不一定对应于单选按钮。