繁体   English   中英

Ruby on Rails:新参数不断显示为“ permitted:false”

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM