Rails3 acts_as_taggable с формой - PullRequest
       5

Rails3 acts_as_taggable с формой

1 голос
/ 09 октября 2011

Я только начал работать с гемом act_as_taggable. Пока что мне действительно нравится, но мне немного неясно, как использовать этот драгоценный камень с формой.

class Photo < ActiveRecord::Base
  acts_as_taggable_on :tags
end

В своей форме для фотографий я пытаюсь установить ряд флажков, чтобы пользователь мог назначить теги своей фотографии:

<%= f.label :tag_list %>
<%= f.check_box :tag_list, "landscape" %>
<%= f.check_box :tag_list, "people" %>

При просмотре формы я получаю эту ошибку:

NoMethodError in Photos#edit
...line #19 raised:

undefined method `merge' for "landscape":String
Extracted source (around line #19):

18:     <div class="float_tag">
19:       <%= f.check_box :tag_list, "landscape" %>

Есть мысли о том, как мне создать свою форму?

Ответы [ 2 ]

3 голосов
/ 09 октября 2011

Я предполагаю, что ваш <form> выглядит примерно так:

<%= form_for(@photo) do |f| %>
  <%= f.label :tag_list %>
  <%= f.check_box :tag_list, "landscape" %>
  <%= f.check_box :tag_list, "people" %>
<% end %>

Вы должны немного изменить свои f.checkbox строки:

<%= form_for(@photo) do |f| %>
  <%= f.label :tag_list %>
  <%= f.check_box :tag_list, { :multiple => true }, 'landscape', nil %>
  <%= f.check_box :tag_list, { :multiple => true }, 'people', nil %>
<% end %>

Что будет публиковатькак при отправке (например, только с выбранными людьми):

{ :post => { :tag_list => ['', 'people'] } }
2 голосов
/ 22 декабря 2013

Для тех, кто пытается заставить это работать с Rails 4 и сильными параметрами, я также должен был разрешить параметр tag_list в виде массива.

params.require(:clip).permit(
  :name, :other_params, { tag_list: [] }
)
...