[英]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.