Ben*_*min 17 strong-parameters ruby-on-rails-4
模特:帖子和用户
帖子belongs_to:用户
用户has_many:帖子
简单.
假设存在少数用户,我们访问Post的编辑页面.
<%= form_for @post do |f| %>
Run Code Online (Sandbox Code Playgroud)
...
<% User.all.each do |user| %>
<div><%= f.radio_button "user_id", user.id %></div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
...
Post's Controller利用Rails 4强大的参数.
params.require(:post).permit(:user_id)
Run Code Online (Sandbox Code Playgroud)
假设编辑帖子表单只有单选按钮作为字段.
问题:抛出ActionController :: ParameterMissing异常.param not found:post
永远不会创建Post params哈希的原因,导致抛出上述异常.与空文本字段不同,空单选按钮不会触发要创建的模型的参数哈希.
如果Post模型要求user_id有效,该怎么办?当然,人们会想要再次渲染视图,原因是无法保存帖子.
问题:在坚持Rails约定的同时处理这种情况的优雅方法是什么?
更新:
关于这个进一步集思广益,我敢肯定可能有很多其他情况会产生这个问题; 它不一定对应于单选按钮.
Pau*_*ulL 29
我有类似的问题,并不喜欢这些答案中的任何一个.在rails文档(http://guides.rubyonrails.org/action_controller_overview.html#more-examples)中,我看到以下解决方案:
params.fetch(:blog, {}).permit(:title, :author)
Run Code Online (Sandbox Code Playgroud)
实际上,您提供的默认值为{},这似乎运行得很好(至少在我的情况下).
应用于您的代码,您将拥有:
params.fetch(:post, {}).permit(:user_id)
Run Code Online (Sandbox Code Playgroud)
我认为这是相当干净的,似乎在我的代码中工作.
| 归档时间: |
|
| 查看次数: |
12888 次 |
| 最近记录: |