Witam serdecznie,
piszę mały serwis i mam taką strukturę:
RUBY:
class Post < ActiveRecord::Base
has_many :post_tags, dependent: :destroy
has_many :tags, through: :post_tags
accepts_nested_attributes_for :post_tags, reject_if: :all_blank, allow_destroy: true
end
class PostTag < ActiveRecord::Base
belongs_to :post
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :post_tags, dependent: :destroy
has_many :post, through: :post_tags
end
HTML:
<%= form_for @post do |f| %>
<%= f.text_field :name %>
<%= f.collection_select :post_tags, Tag.all, :id, :name, {}, { multiple: true } %>
<%= f.submit %>
<% end %>
Pytania:
1.) Zważywszy, że jest to relacja many-to-many po zapisie dostaję błąd:
Post tags can’t be blank
Jak poprawnie zapisać wiele wybranych tagów dla modelu Post w tabeli post_tags?
2.) W tym samym formularzu mam dodawanie zdjęć.
W kontrolerze mam zapis:
@lodge = current_user.lodges.new
8.times{ @lodge.images.build }
i 8.times{ @post.images.build } takie coś muszę zrobić w akcji new, edit, create i update moje pytanie brzmi czy mogę te 8.times jakoś zrobić w HTML?
Obecnie HTML do dodawania zdjęć wygląda tak:
<%= f.fields_for :images do |o| %>
<%= o.label :image %>
<% if o.object.new_record? %>
<%= o.file_field :image %>
<% else %>
<%= image_tag o.object.image.url(:thumb) %>
<%= o.check_box '_destroy' %>
<% end %>
<% end %>
3.) Jeśli mam formularz many-to-many jak zrobić by ewentualne błędy pokazały się na tym formularzu?
Obecnie jeśli wystąpi błąd w formularzu dla pól gdzie nie ma relacji lub dla relacji one-to-many i one-to-one to dane pole wrapuje nam się klasą field_with_errors zaś dla definicji tj. w pkt. 1 te pole nie będzie podświetlone mimo że w komunikatach błędu ten błąd występuje.
Będę wdzięczny za odpowiedź.