J'ai un emplacement de modèle qui contient beaucoup de messages. J'essaie de permettre aux utilisateurs qui parcourent les emplacements d'envoyer des messages aux propriétaires de l'emplacement.Définition automatique des attributs imbriqués dans Rails
Je location.rb
has_many :messages
accepts_nested_attributes_for :messages
et message.rb
belongs_to :location
Dans locations_controller.rb
def location_params
params.require(:location).permit(:name,
:user_id,
:image,
:latitude,
:longitude,
location_images_attributes: [:id, :location_id, :location_image, :_destroy],
messages_attributes: [:id, :location_id, :from_email, :to_email, :content])
end
J'ai actuellement à mon avis le code suivant:
<%= simple_form_for @location do |l| %>
<%= l.simple_fields_for :messages, @location.messages.build do |m| %>
<%= m.input :content %>
<%= m.input :to_email, :input_html => {:value => @location.user.email}, as: :hidden %>
<% end %>
<%= l.button :submit %>
<% end %>
Je ne veux pas définir la valeur du champ de courrier électronique par l'intermédiaire du champ caché, mais je veux passer la valeur du contrôleur. Ou un modèle. S'il vous plaît donnez votre avis.
Merci. Après avoir réfléchi, j'ai réalisé que ce message a location_id. Et l'emplacement a user_id, donc je peux extraire les utilisateurs via @ message.location.user.email ... – luksimir