Rails. Почему для создания тегов acts_as_taggable не нужно находиться во вложенной форме? - PullRequest
0 голосов
/ 12 марта 2011

Когда у меня есть такое отношение, как:

class Programmer < ActiveRecord::Base
    has_many :projects
    has_many :assignments, :through => :projects
    acts_as_taggable
end


class Assignment < ActiveRecord::Base
    has_many :projects
    has_many :programmers, :through => :projects
end

Для ввода данных программиста и назначения в одной форме требуется, чтобы у меня была вложенная форма.Почему, когда у меня есть поле для тегов, теги не обязательно должны быть во вложенной форме?

например, это не работает

<%= form_for(@programmer) do |p| %>
    <%= p.label :name %><br />
    <%= p.text_field :name %><br />
    <%= p.label :assignments %><br />
    <%= p.text_field :assignments %><br />
    <%= p.submit %>
<% end %>

, но почемуэто работа?

<%= form_for(@programmer) do |p| %>
    <%= p.label :name %><br />
    <%= p.text_field :name %><br />
    <%= p.label :tag_list %><br />
    <%= p.text_field :tag_list %><br />
    <%= p.submit %>
<% end %>

1 Ответ

0 голосов
/ 05 ноября 2011

Менее подробный ответ заключается в том, что acts_as_taggable_on обрабатывает создание тегов при использовании tag_list=.

Пример сеанса IRB:

$> photo = Photo.last
$> photo.tag_list # ['outer space', 'andromeda']
$> photo.tag_list = "outer space, andromeda, galaxy"
$> photo.tag_list # ['outer space', 'andromeda', 'galaxy']
$> photo.save
# checks the db for existing outer space, andromeda, and
# galaxy tags on the photo, creates any missing ones,
# deletes any ones it previously had but you didn't specify

acts_as_taggable_on может разумно реализовать это поведение в этом методе, потому чтобиблиотека может предположить, что вы хотите проверить наличие ошибок, и удалить все, что вы не предоставили.Делать это по умолчанию при любой родовой ассоциации было бы плохо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...