W mojej aplikacji użytkownicy należą do grupy i odbywa się to w moim Modelu grupy użytkowników.Autonomiczne szyny użytkownika Obiekt użytkownika
class Usergroup < ApplicationRecord
belongs_to :user
belongs_to :group
end
class User < ApplicationRecord
has_many :usergroups
has_many :groups, through: :usergroups
end
class Group < ApplicationRecord
has_many :usergroups
has_many :users, through: :usergroups
end
Gdy chcę dodać user
do group
chociaż muszę znać identyfikator group
i identyfikator user
co jest dalekie od ideału. Stworzyłem pole autouzupełniania używając jQuery, aby zająć się tym dla mnie.
<%= form_with(model: usergroup, local: true) do |form| %>
<div class="field">
<%= form.label :user_id %>
<%= form.text_field :user_id, id: 'user', data: { autocomplete_source: User.order(:email).map(&:email) } %>
</div>
<%= form.submit %>
<% end %>
Gdy próbuję utworzyć nową usergroup
z elektroniczną I wybranego z menu rozwijanego to zgłaszającej bo to wymagająca tam być użytkownikiem. Jak przekazać pełny obiekt użytkownika do tego pola zamiast tylko e-maila użytkownika, który chcę utworzyć? Czy podchodzę do tego prawidłowo?
Jest to trasa wykorzystywana do pozyskiwania użytkowników.
user GET /users/:id(.:format) users#index
Możesz chcieć osiągnąć to za pomocą id lub adresu e-mail, a nie obiektu użytkownika. Ponieważ pomocnicy formularza faktycznie renderują kod HTML, serializacja obiektów użytkownika i wysyłanie ich po danych formularzy jest trochę marnotrawstwem. –
Standardową metodą jest wypełnienie ukrytego pola wartością user_id i kontynuowanie wyświetlania wiadomości e-mail w polu automatycznego uzupełniania. Nie wiem, czego używasz do zasilania autouzupełniania, więc nie można podać przykładów kodu. – TomDunning
@TomDunning Korzystam tylko z autouzupełniania jQuery. Możesz zobaczyć, skąd pochodzą dane w poście. Dzięki –