我一直在写一个新的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”!谁能指出什么或给我一些建议?
答案 0 :(得分:0)
此行class background{
static func image(){
let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
backgroundImage.image = UIImage(named: "bg_name.png")
backgroundImage.contentMode = UIViewContentMode.scaleAspectFill
self.view.insertSubview(backgroundImage, at: 0)
}
存在问题
因为您是在未经许可的情况下直接打印/访问参数,所以请使用render plain: params[:animal].inspect
:animal_params
这行render plain: animal_params.inspect
很好。我想您的创建过程只能完美地工作。
答案 1 :(得分:0)
您的参数应该看起来像
<ActionController::Parameters {"animal" => {"name"=>"cat", "scientific_name"=>"Felis catus", "range"=>"land"} } permitted: false>
还可以通过表格更改:animal to @animal.
或者,您也可以尝试
params.require(:animal).permit(:name, :scientific_name, :range).permitted?