2013-12-06 2 views
0

У меня есть следующие поля формы ..Сохранение 4 входа как 1 в рельсах форме

<%= u.password_field 'pin[]', required: true, maxlength: 1, autofocus: true %> 
<%= u.password_field 'pin[]', required: true, maxlength: 1 %> 
<%= u.password_field 'pin[]', required: true, maxlength: 1 %> 
<%= u.password_field 'pin[]', required: true, maxlength: 1 %> 

У меня есть столбец в моей базе данных называется контактный (тип: integer), которые я хочу, чтобы сохранить 4-значный PIN-код для из этих полей. Они должны быть в 4 разных входах для эстетики дизайна, но у меня проблемы с сохранением базы данных.

До сих пор я получаю сообщение об ошибке:

no implicit conversion of Symbol into Integer

Когда я запускаю следующее:

@user.pin = params.merge([:user][:pin_1], [:user][:pin_2], [:user][:pin_3], [:user][:pin_4]) 

Я попытался с помощью join(',') и split(',') вместе, но я не могу показаться, чтобы получить 4 цифры, как целое число.

Любая помощь будет высоко ценится :)

ответ

0

Если вы делаете

begin 
    "#{params[:user][:pin_1]}#{params[:user][:pin_1]}#{params[:user][:pin_1]}#{params[:user][:pin_1]}".to_i 
rescue Exception => e 
    <error handling here> 
end 

Это должно сделать трюк, это грязно, но он должен работать. Я также сделал бы проверку на JavaScript, чтобы убедиться, что это число, а не буква.

+0

Я пробовал это раньше и только что попробовал еще раз. Использование этого, кажется, просто сохранить его как 0 в строке ... Не знаете, почему! – notrab

+0

Можете ли вы поместить отладчик в действие контроллера, которое отправляет форма, а затем дать нам результаты «pp params» в консоли? –

+0

Rails Console: '" pin "=> [nil, nil, nil, nil]' – notrab

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