In meiner Rails-Anwendung habe ich zwei Modelle namens "Benutzer" und "Store". An user belongs_to store
und A store has_many users
. Ein Benutzer hat viele Attribute wie Name, E-Mail und Rolle etc. In einem der Formulare für den Speicher möchte ich verschachtelte Formulare verwenden, um Benutzer zu erstellen, deren Rolle Packer ist. Das Problem ist, wenn ich verschachtelte Formulare verwende, werden auch andere Benutzer aufgelistet, deren Rolle nicht "Packer" ist. Ich möchte speziell verschachtelte Formulare nur für Benutzer verwenden, deren Rolle "Packer" ist. Gibt es eine Möglichkeit, Benutzer zu filtern mit Rolle als ‚Packer‘ in verschachtelten FormenFilter für verschachtelte Formulare - Ruby on Rails
0
A
Antwort
0
So starten Sie mit Ihnen eine „short-cut“ Beziehung einrichten möchten:
class Store < ActiveRecord::Base
has_many :users
has_many :packers, -> { where(role: 'packer') }, class_name: 'User'
end
class User < ActiveRecord::Base
belongs_to :store
end
fields_for(record_name, record_object = nil, options = {}, &block)
ein optionales record_object
Argument, können Sie die Datensätze gesetzt verwendet:
<%= form_for @store do |f| %>
...
<%= f.fields_for :users, f.object.packers do |user| %>
<%= user.hidden_field :role %>
<%= user.text_field :name %>
<% end %>
...
<% end %>
Mit f.object
nicht unbedingt erforderlich ist - Sie jede Variable verwenden könnte, aber es macht es einfacher, wiederverwendbare Teile zu bauen.