2013-09-04 2 views
1

У меня есть почтовая таблица со столбцом скорости, который является типом массива, используя postgresql. Массив содержит 3 значения, например [1.99, 2.99.5.99]. Я не могу понять, как правильно отправить форму, я хочу отобразить поле для каждого элемента массива.Отправить элементы массива в форме рельсов

мой текущий нерабочий код;

= form_for [:admin,@postage] do |f| 
     .field-box 
     = f.label :name 
     = f.text_field :name 
     = f.label "UK" 
     = text_field_tag "rate[]" 
     = f.label 'EU' 
     = text_field_tag "rate[]" 
     = f.label "Rest of World" 
     = text_field_tag "rate[]" 

форма передается в параметрах, но не сохраняется в базе данных

Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxx=", "postage"=>{"name"=>"Item1"}, "rate"=>["1.99","2.99","5.99"], "button"=>"", "id"=>"2"} 

Как правильно настроить форму, и порядок всегда будет нетронутым?

+0

- значения массива 'rate', предоставленные пользователем и представленные в форме? – dax

+0

Да, они являются входами пользователя –

+0

и являются частью '' '' почтовой доставки''? т. е. можно ли вызывать '@ стоимость доставки.трат'? – dax

ответ

0

Похоже, что он сериализуется правильно. Используете ли вы Rails 4? Если да, проверьте способ разрешения в контроллере. Для массива PG он должен выглядеть так:

params.permit({rate: []}) 

Кроме того, я бы рекомендовал изменить имя столбца на тарифы. :)

+0

Я определенно не видел, что разрешение для массивов PG раньше, это где-то в документах? –

+0

Не уверен, где он находится в документах, но мы использовали этот синтаксис без проблем. Вот статья на нем: http://theotherzach.com/writes/2013/3/11/rails-4-postgres-array-hstore-and-strong-params-guide-by-someone-that-likes-you –

+0

Вы пробовали этот синтаксис? Любопытно посмотреть, не делает ли это трюк! –

0

Хорошо, прежде всего, я считаю, что вам все еще нужно serialize :rate в вашем классе модели. Но чтобы этот показатель соответствовал формату, который вы показывали в начале, вам нужно сделать rate = rate.map {|rt| rt.to_f} (да, я знаю, должен быть способ упростить это).

+0

Сериализация не нужна, поскольку используется тип массива postgresql –

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