J'essaie de créer un enregistrement dans une table de jointure à partir de l'action d'un bouton. Pour expliquer, j'aurais un modèle d'événements et voudrais suivre les événements sélectionnés de chaque utilisateur.rails - création d'un enregistrement dans une table de jointure
J'ai utilisé la relation HABTM car je n'ai pas vraiment besoin de champs supplémentaires.
User.rb => has_to_and_belongs_to_many: événements Event.rb => has_to_and_belongs_to_many: les utilisateurs Events_Users Migration => [user_id, event_id, id => false]
Alors, comment je pensais que je le ferais est. ...
users_controller.rb =>
def add_event
@user = User.find(session[:user_id])
params[:user][:event_ids] ||= []
if @user.update_attributes(params[:user])
flash[:notice]='Added to My Events'
redirect_to :action => "index"
end
end
et btn_link ressemble ....
<% @events.each do |event| %>
<%= link_to image_tag("heart.gif"), :controller => 'user', :action => 'add_event' %>
<%=h event.name %>
<%=h event.description %>
<% end %>
Mais je ne suis pas sûr comment vérifier pour voir si son fonctionnement ... Comment pourrais-je effectuer ces actions dans la console afin que je puisse vérifier si les enregistrements en cours d'ajout?
u = User.find(1)
e = Event.find(1)
????? x = u.e.créer ?????
Ça a bien fonctionné! Comment pouvez-vous ajouter l'action << dans le contrôleur si je peux effectuer l'action sur la page Web? – ChrisWesAllen
La méthode '<<' fonctionnera aussi dans le contrôleur. Le 'u.event' renvoie un tableau. Essentiellement, vous appelez des opérations de tableau standard. Rails remplace le comportement standard ou l'opération '' '(également appelée' push') pour mettre à jour la table 'association'. –