[英]Ruby on Rails: new params keep showing as “permitted: false”
我一直在写一个新的RoR应用程序进行练习。 这是一个基本应用程序,应该可以用作动物的查找页面。
我一直在为我的页面使用控制器中的Create / New函数。 我想这样做,以便用户可以输入动物并将动物保存到SQL数据库。 之后,页面应重定向到新创建的动物页面。
这是我的animals_controller.rb:
class AnimalsController < ApplicationController
def index
@animals = Animal.all
end
def show
@animal = Animal.find(params[:id])
end
def new
end
def create
# render plain: params[:animal].inspect
@animal = Animal.new(animal_params)
@animal.save
redirect_to @animal
end
private def animal_params
params.require(:animal).permit(:name, :scientific_name, :range)
end
end
这是我的views / animals / new.html.erb:
<h1> Add Animal </h1>
<%= form_for :animal, url: animals_path do |f| %>
<p>
<%= f.label :name %> <br>
<%= f.text_field :name %>
</p>
<p>
<%= f.label :scientific_name %> <br>
<%= f.text_field :scientific_name %>
</p>
<p>
<%= f.label :range %> <br>
<%= f.select :range, ['land', 'sea', 'sky', 'underground'], :prompt => 'Select One' %>
</p>
<p>
<%= f.submit %>
<p>
<% end %>
当我尝试输入新动物时,会得到以下信息:
<ActionController::Parameters {"name"=>"cat", "scientific_name"=>"Felis catus", "range"=>"land"} permitted: false>
我想知道为什么当我在animals_controller.rb中有代码指出允许这些参数时,为什么不断得到“ permitted:false”! 谁能指出什么或给我一些建议?
此行的问题是将其render plain: params[:animal].inspect
因为您未经许可直接打印/访问params,请改用:animal_params
render plain: animal_params.inspect
这行@animal = Animal.new(animal_params)
很好。 我想您的创建过程只能完美地工作。
你的参数应该看起来像
<ActionController::Parameters {"animal" => {"name"=>"cat", "scientific_name"=>"Felis catus", "range"=>"land"} } permitted: false>
另外,您可以在表格:animal to @animal.
更改:animal to @animal.
或者,您可以尝试此
params.require(:animal).permit(:name, :scientific_name, :range).permitted?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.