首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby on Rails:新参数一直显示为"permitted: false“

Ruby on Rails:新参数一直显示为"permitted: false“
EN

Stack Overflow用户
提问于 2018-08-07 09:38:10
回答 2查看 1.8K关注 0票数 1

我一直在写一个新的RoR应用程序来练习。这是一个基本的应用程序,被认为是一个动物的查找页面。

我一直在我的页面的控制器中使用Create/New函数。我想让它,使用户可以输入动物,并有动物保存到SQL数据库。之后,页面应该重定向到新创建的动物页面。

这是我的animals_controller.rb:

代码语言:javascript
运行
复制
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

这是我的观点/动物/new.html.erb:

代码语言:javascript
运行
复制
<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 %>

当我尝试进入一个新的动物时,我得到的是:

代码语言:javascript
运行
复制
<ActionController::Parameters {"name"=>"cat", "scientific_name"=>"Felis catus", "range"=>"land"} permitted: false>

我想知道为什么当我在animals_controller.rb中有代码声明这些参数是允许的时,我总是得到" permitted :false“!有没有人能指出什么或者给我一些建议?

EN

回答 2

Stack Overflow用户

发布于 2018-08-07 10:07:10

问题出在此行render plain: params[:animal].inspect上,因为您使用:animal_params而是未经许可直接打印/访问参数

代码语言:javascript
运行
复制
render plain: animal_params.inspect

这行代码@animal = Animal.new(animal_params)很好。我猜你的创作过程只会完美地工作。

票数 0
EN

Stack Overflow用户

发布于 2018-08-07 10:25:43

你的护理人员应该是这样的

代码语言:javascript
运行
复制
<ActionController::Parameters {"animal" => {"name"=>"cat", "scientific_name"=>"Felis catus", "range"=>"land"} } permitted: false>

此外,在表单中,您是否可以更改:animal to @animal.

或者,您可以尝试执行以下操作

代码语言:javascript
运行
复制
params.require(:animal).permit(:name, :scientific_name, :range).permitted?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51717649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档