簡體   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