Je souhaite que mon application ajoute un livre à current_user lorsqu'il clique sur le lien. Mon code semble être correct, il n'y a pas d'erreur mais après que l'utilisateur clique sur le lien rien ne se passe.Comment appeler une méthode du contrôleur en utilisant link_to?
book.rb:
has_many :book_users
has_many :users, through: :book_users
user.rb:
has_many :book_users
has_many :books, through: :book_users
book_user.rb:
belongs_to :book
belongs_to :user
books_controller.rb:
before_action :is_admin?, except: [:book_params, :add_to_books_i_read, :index]
before_filter :authenticate_user!
expose(:book, attributes: :book_params)
expose(:books)
def create
if book.save
redirect_to(book)
else
render :new
end
end
def update
if book.save
redirect_to(book)
else
render :edit
end
end
def add_to_books_i_read(book_id)
current_user.books << Book.find(book_id)
end
À mon avis index Je
ul
-books.each do |book|
li
= link_to "#{book.name}", book_path(book)
= link_to " Add to my books", {:controller => "books", method: :add_to_books_i_read, book_id: :book.id}
Alors, qu'est-ce que je fais mal? Pourquoi ma méthode add_to_books_i_read ne fait rien? La table de la base de données book_users n'enregistre rien après avoir cliqué sur ce link_to, mais elle fonctionne bien elle-même (j'ai vérifié via la console). Que puis-je faire? Comment rendre les utilisateurs ajoutent des livres à travers la méthode et comment appeler cette méthode correctement? Toute aide serait appréciée, merci!
Oui, j'ai déjà essayé, mais il ne fait toujours rien ( – Jakov
pouvez-vous vérifier dans les journaux si cette action est appelée? –
Oui, ça va avec admin Et oui, il est appelé – Jakov