Holzfaller
@Holzfaller
Ruby / Ruby on Rails developer (full-stack)

Как в RoR сохранить поле с типом text в массив, а потом выбрать каждое слово из этого массива и вставить в форму в виде чекбокса?

Здравствуйте. вопрос в следующем: как мне сохранить поле с типом text в массив, а потом выбрать каждое слово из этого массива и вставить в форму в виде чекбокса?
модель:
class Category < ActiveRecord::Base
  belongs_to :section
  has_many :items
  attr_accessible :title, :section_id, :tags
  serialize :tags
  validates :title, :section_id, presence: true
end


контроллер:
def create
    @category = Category.new(category_params)

    if @category.save
      redirect_to admins_path, notice: 'Category create successful!'
    else
      @section = Section.order('title ASC')
      render :new
    end
  end

  def new
    @category = Category.new(:tags => Array.new)
    #@category.serializable_hash(@category.tags)
    @section = Section.order('title ASC')
  end
  private
  def category_params
    params.require(:category).permit(:title, :section_id, :tags => Array.new)
  end
  • Вопрос задан
  • 2782 просмотра
Решения вопроса 2
FanKiLL
@FanKiLL
Передать в метод текст, вернёт масив слов, порежет текст по пробелу.
def tag_l­ist text
  text.spl­it(" ")
end


в view вот так, поиграйтесь с параметрами в f.collection_select.
<%= f.label :tag_ids, "Теги", :class => 'css class' %>
<%= f.collection_select(:tag_ids Tag.all, :id, :name, {}, :class => 'css class') %>


Подробнее тут collection_select
Ответ написан
Комментировать
@fuCtor
Ruby разработчик
Можно вот так унифицировать:
def tags=(value)
  tag_array = value.is_a?(String) ? value.split(' ')  :  value
  super tag_array
end
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы