0

Я реализую tag2 с помощью has_many. Моя реализация имеет два разных сценария.Rails - Tagging with has_many through и select2

  1. Меню выбора позволяет несколько (пометки), но не позволяет на входе в меню выбора.
  2. То же, что и выше, но использует ajax, чтобы позволить пользователю вводить новые значения выбора на лету.

Сценарий 1 хорошо подходит для маркировки. Сценарий 2, похоже, работает (может выполнять тегирование), но не сохраняет значения. Моя проблема, похоже, сводится к моим моим элементам ввода для сценариев.

Сценарий 1 использует:

<%= f.association :repairers, label_method: :rep_name, value_method: :id, include_blank: true, label: 'Repairer'%> 

и когда форма отправлена ​​дает Params похожие на:

"repairer_ids"=>["", "1132", "1131"]

Сценарий 2: использование

<%= f.hidden_field :repair_type_id, :class => "required on-the-fly-select select"%> 

и использует много js-кода для реализации на лету ввода для меню выбора. Когда форма будет отправлена ​​данные будут выглядеть следующим образом:

"repair_type_id"=>"5688,5690"

Так со сценарием 2 идентификаторы не будут представлены в виде массива. Я попытался изменить выбор, чтобы:

<%= hidden_field_tag("repair_item[repair_type_ids][]", "", :id => "repair_item_repair_type_ids", :class => "required on-the-fly-select select") %> 

но затем соответствующие пары подаются неправильно, и не спасаю:

"repair_type_ids"=>["5688,5690"]

Можно ли получить параметры из Сценария 2 представить в формате, который Rails сделал параметры в Сценарий 1?

+0

почему нельзя использовать 'метод split' рубина, чтобы преобразовать эту строку данных в массив и хранить в DB – anusha

ответ

0

Попробуйте String#split

repair_type_id = "5688,5690" 
repair_type_id.split(',') 
=> ["5688", "5690"] 

Это лучше использовать этот метод split в контроллере при сохранении данных на конкретном атрибуте для этого, а не на hidden_tag.

Edit:

Если вы хотите, чтобы преобразовать строку в pluralpluralize затем использовать так же, как для singularize

2.0.0-p481 :010 > 'cat'.pluralize 
=> "cats" 
2.0.0-p481 :011 > 'dogs'.singularize 
=> "dog" 
+0

Благодарим за помощь. Можете ли вы прокомментировать, почему лучше использовать раскол, а не манипулировать с помощью hidden_tag. Я спрашиваю, как из примера кода в моем вопросе мы видим, что параметр repair_type возвращается как сингулярное или множественное число (repair_type_ids).Я бы скорее вернул его как множественное число, чтобы у меня была согласованность в моем контроллере. Возможно ли, чтобы мой f.hidden_field submit с именем множественного param? – Marklar