2014-11-04 3 views
0

Моя страница с сообщением об ошибке сообщает мне, что «параметр отсутствует или значение пуст: пользователь» и ссылается на мой частный метод user_params и мое действие в качестве виновников. Он также показывает, что все параметры, которые я передаю, получают от созданного сообщения.ActionController :: ParameterMissing in UsersController # create

сокращенная Контроллер:

def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(user_params) 
    @user.save 
    redirect_to @user 
    end 

    private 

    def set_user 
    @user = User.find(params[:id]) 
    end 

    def user_params 
    params.require(:user).permit(:first_name, :last_name, :email) 
    end 

Мой form_tag, что инициирует создание пост:

= form_tag @user do 
    .form-group 
    = label_tag :first_name, nil, class: 'col-md-2' 
    = text_field_tag :first_name, nil, class: 'col-md-3' 
    %br 
    .form-group 
    = label_tag :last_name, nil, class: 'col-md-2' 
    = text_field_tag :last_name, nil, class: 'col-md-3' 
    %br 
    .form-group 
    = label_tag :email, nil, class: 'col-md-2' 
    = email_field_tag :email, nil, class: 'col-md-3' 
    %br 
    .actions.form-group 
    = submit_tag 'Submit', class: 'btn btn-primary col-md-offset-2' 
+1

в то время как @BroiSatse дает решение, причиной являются параметры, которые вы получаете, не вложены в хэш-файл ': user', то есть' params [: user] 'пуст. Потому что в html ваши имена ввода не похожи на 'user [email]' и т. Д. ... – apneadiving

ответ

1

Изменение:

= form_tag @user do 

в

= form_for @user do |f| 

А потом все label_tag к f.label, text_field_tag к f.text_field, email_field_tag в f.email_field и, наконец, submit_tag к f.submit. Удалите все нитки, и все должно работать.

+0

Ошибка больше не отображается, но параметры отсутствуют. Kinda ironic :) Есть ли причина использовать form_for over form_tag? – Jadam

+1

'form_for' связывает объект с полями, а также обеспечивает лучшее именование для полей, поэтому параметры, по-видимому, сгруппированы при отправке. С тегом формы все параметры отправляются как отдельный параметр (нет ключа обмотки) – BroiSatse

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