2016-01-19 4 views
1

Я получаю следующую ошибку, когда пытаюсь создать новый список, и я не могу понять, где проблема.ActionController :: ParameterMissing param отсутствует или значение пуст:

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 %> 

Спасибо!

+0

можете ли вы вставить след ваших параметров, выводимых на консоль во время действия create? –

+0

Попробуйте перезагрузить сервер, а затем попробуйте –

ответ

3

Проблема в том, что вы не соблюдаете соглашения об именах Rails. У вас есть класс BusinessListing, но вы указываете переменные экземпляра и ссылки на параметры как businesslisting. BusinessListing (случай верблюда) - это по существу два слова, которые должны быть сопоставлены как случай с змеей при использовании имен переменных экземпляра: business_listing

То же самое было бы для вашего имени параметра. When you pass a model object into form_for, Rails использует имя класса для определения имени пар, так что я буду держать пари, фактические параметров, который встретив является business_listing, не businesslisting

Просто измените все вхождения businesslisting в business_listingbusinesslistings к business_listings) на протяжении всего кода , и вы больше не должны испытывать эту проблему.

Самое важное изменение было бы здесь:

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

Это само по себе должно решить текущие проблемы, но я настоятельно призываю вас следовать соглашению на протяжении всего кода, чтобы избежать дальнейшего выпуска и путаницы.

+0

. Теперь это намного больше. Спасибо!! –

+0

Добро пожаловать! – dwenzel

Смежные вопросы