Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:ActionController::ParameterMissing param缺失或值为空:_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails:ActionController::ParameterMissing param缺失或值为空:

Ruby on rails Rails:ActionController::ParameterMissing param缺失或值为空:,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,当我试图创建一个新的列表时,我遇到了以下错误,我无法找出问题所在 ActionController::ParameterMissing in BusinessListingsController#create param is missing or the value is empty: businesslisting 以下是列出控制器的业务代码: class BusinessListingsController < ApplicationController def index

当我试图创建一个新的列表时,我遇到了以下错误,我无法找出问题所在

ActionController::ParameterMissing in BusinessListingsController#create
param is missing or the value is empty: businesslisting
以下是列出控制器的业务代码:

class BusinessListingsController < ApplicationController
  def index
    @businesslistings = BusinessListing.all
  end

 def new
   @businesslisting = BusinessListing.new
 end

def create
  @businesslisting = BusinessListing.new(businesslisting_params)
  if @businesslisting.save
  redirect_to @businesslisting
 else
  render 'new'
 end
end

def show
  @businesslisting = BusinessListing.find(params[:id])
end

private 
  def businesslisting_params
    params.require(:businesslisting).permit(:title, :price, :city,    :industry)
  end
end 
class BusinessListingsController
查看/业务列表/:

<div class="row">
 <div class="col-md-6">
 <%= form_for(@businesslisting) do |f| %>

<%= f.label :title %>
<%= f.text_field :title %>

<%= f.label :price %>
<%= f.text_field :price %>

<%= f.label :city %>
<%= f.text_field :city %>

<%= f.label :industry %>
<%= f.text_field :industry %>

<%= f.submit "Create a Listing", class: "btn btn-primary" %>
<% end %>


谢谢

问题在于您没有遵循Rails命名约定。您将类命名为
BusinessListing
,但将实例变量和参数引用命名为
BusinessListing
BusinessListing
(驼峰大小写)本质上是两个单词,当使用实例变量名时,应将其作为snake大小写进行匹配:
business\u listing

你的参数名也是如此,Rails使用类名来确定参数名,因此我打赌遇到的实际参数是
business\u listing
,而不是
businesslisting

只需将代码中出现的
businesslisting
更改为
business\u listing
(以及
businesslistings
更改为
business\u listings
),您就不会再遇到此问题

最重要的变化是:

params.require(:business_listing).permit(:title, :price, :city, :industry)

这本身就可以解决您当前的问题,但我强烈建议您在整个代码中遵循约定,以避免进一步的问题和混乱

我在Ubuntu 20.04中使用Rails 6API时遇到了这个挑战

我有一个
学校
资源(控制器、模型和路线),我需要使用邮递员创建一个学校。
Schools
资源有两个参数(名称和别名)。因此,我使用Params部分来传递它,但我得到了错误:

app/controllers/schools_controller.rb:49:in `school_params'
app/controllers/schools_controller.rb:18:in `create'
Started POST "/schools" for ::1 at 2020-12-09 03:40:29 +0100
Processing by SchoolsController#create as */*
  Parameters: {"name"=>"The Prince School", "alias"=>"The Prince"}
Completed 400 Bad Request in 0ms (ActiveRecord: 0.0ms | Allocations: 122)
  
ActionController::ParameterMissing (param is missing or the value is empty: school):

以下是我如何修复它的方法

问题是应用程序需要另一个名为
school
的参数,根据
SchoolsController
中我的
school\u参数
,该参数将封装其他参数:

def school_params
  params.require(:school).permit(:name, :alias)
end
解决方案1

我在标题部分中将
内容类型
定义为
应用程序/json
,然后使用以下方法将Postman的正文部分中的参数传递为原始json对象:

{
    "school": {
        "name": "The Prince School",
        "alias": "The Prince"
    }
}

而且效果很好

解决方案2

我使用表单数据提交请求,方法是单击邮递员的正文部分并选择表单数据。所以请求看起来是这样的:

school[name]:The Prince School
school[alias]:The Prince

资源

就这些


我希望这有帮助

您能在创建操作期间粘贴控制台上输出的参数跟踪吗?尝试重新启动服务器,然后尝试现在更有意义的操作。非常感谢!!