gpt4 book ai didi

ruby-on-rails - Rails:ActionController::ParameterMissing 参数丢失或值为空:

转载 作者:行者123 更新时间:2023-12-04 00:11:12 25 4
gpt4 key购买 nike

我在尝试创建新列表时遇到以下错误,但我无法确定问题出在哪里。

ActionController::ParameterMissing in BusinessListingsController#create
param is missing or the value is empty: businesslisting

下面是 business_listing_controller 的代码:

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

查看/business_listing/:

<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,但将实例变量和参数引用命名为 businesslistingBusinessListing(驼峰式)本质上是两个词,在使用实例变量名时应蛇形匹配:business_listing

您的参数名称也是如此。 When you pass a model object into form_for , Rails 使用类名来确定参数名,所以我敢打赌遇到的实际参数是 business_listing,而不是 businesslisting

只需将整个代码中出现的所有 businesslisting 更改为 business_listing(并将 businesslistings 更改为 business_listings),并且您应该不会再遇到此问题。

最重要的变化会在这里:

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

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

关于ruby-on-rails - Rails:ActionController::ParameterMissing 参数丢失或值为空:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34867998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com