Ich möchte, dass meine App current_user ein Buch hinzufügt, wenn er auf den Link klickt. Mein Code scheint in Ordnung zu sein, es gibt keine Fehler, aber nach dem Klicken auf den Link passiert nichts.So rufen Sie eine Methode vom Controller über link_to auf?
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
In meinem Indexansicht Ich habe
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}
Also, was mache ich falsch? Warum macht meine Methode add_to_books_i_read nichts? Die Tabelle in der Datenbank book_users zeichnet nichts nach dem Klicken auf dieses link_to auf, aber es funktioniert gut selbst (ich über die Konsole überprüft). Was kann ich tun? Wie können Benutzer Bücher über die Methode hinzufügen und diese Methode korrekt aufrufen? Jede Hilfe wäre willkommen, danke!
Ja, ich habe schon versucht, aber es immer noch tut nichts ( – Jakov
Sie Protokolle einchecken können, wenn diese Aktion aufgerufen wird? –
Ja, dann ist es mit Admin ok. Und ja, es heißt – Jakov