2016-01-17 3 views
-1

При отправке моей формы выдает параметр errorMissing, я просматриваю свои маршруты, а для create отображает регистрацию, также я попытался использовать new_signup в обоих из них, как ни одна из них, похоже, не исправила ошибку. Я не понимаю, почему это не работает, и поиск другого сообщения, чтобы понять это, но безрезультатно.ActionController :: ParameterMissing in RegistrationsController # create

Полного Ошибка

ActionController :: ParameterMissing в SignupsController # создать

паров отсутствуют или значение пусто: Регистрация журналы сервера

private 
def signup_params 
    params.require(:signup).permit(:email) 
end 
end 

Started POST "/signups" for 50.17.182.190 at 2016-01-17 22:06:10 +0000 
Cannot render console from 50.17.182.190! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 
Processing by SignupsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"qteb42ekyyISXRfxX/aJEq6msi5nywvHb/vx0aTBkhLZ61hUutdgrRGP7QK6Jd2jxEesTBANQ9FiXGTLhX7crA=="} 
Completed 400 Bad Request in 70ms 
    ActionController::ParameterMissing (param is missing or the value is empty: signup): 
    app/controllers/signups_controller.rb:18:in `signup_params' 
    app/controllers/signups_controller.rb:7:in `create' 

Вот моя форма

<%= form_for(@signup, html: { class: 'form-inline' }) do |f| %> 
     <form class="form-inline"> 
     <div class="form-group"> 
     <label class="sr-only" for="signups">Email address</label> 
      <input type="email" class="form-control" id="signups" placeholder="Enter email"> 
      </div> 
     <button type="submit" class="btn btn-primary">Sign in</button> 
    </form> 
    <% end %> 

Контроллер

class SignupsController < ApplicationController 
def new 
@signup = Signup.new 
end 

    def create 
    @signup = Signup.new(signup_params) 

    if @signup.save 
    redirect_to root_url, notice: "Thank you for expressing interest." 
    else 
    render action: 'new', alert: "Signup failed." 
    end 
    end 

private 
def signup_params 
    params.require(:signup).permit(:email) 
end 
end 

Маршруты

root GET/ signups#new 
      signups POST /signups(.:format)    signups#create 
      new_signup GET /signups/new(.:format)   signups#new 
      courses GET /courses(.:format)    courses#index 
        POST /courses(.:format)    courses#create 
      new_course GET /courses/new(.:format)   courses#new 
+0

Это поможет, если вы выложили полный текст фактического сообщение об ошибке. – MarsAtomic

+0

Я просто разместил его. – user3905353

+2

Похоже, вы дублируете свои теги 'form'. Rails 'form_for' создает для вас тэг' form', но вы также имеете ручной тег 'form' в следующей строке:'

'. Удалите эту строку и '
', и это должно устранить вашу проблему. Также всегда отступ! Это облегчит вам чтение вашей формы. – dwenzel

ответ

1

Ваш контроллер ожидает params[:signups][:email], но разметка фактически не обеспечивают такое поле для <form> представить.

Вы должны использовать форму помощник, оказываемый вам form_for произвести ваши <input> тегов, так что имени каждого input соответствует свойствам модели вы данный form_for.

В этом случае ваша электронная почта <input> следует заменить:

= f.text_field :email 

Это будет производить ввод с правильным атрибутом имя: name="signups[email]"

+0

Пробовал, что не работает. Все еще бросает ошибку. – user3905353

+0

Эта форма является формой бутстрапа - я должен использовать что-то другое вместо этого. – user3905353