为了使这个可以理解,我使用简化版本来理解我想要实现的目标。
该平台有10本书(第1,2,3,4,5,6,7,8,9,10号书)。
该平台有2个用户(用户A和B)。
用户可以拥有无限量的书籍,甚至可以复制一次。例如,用户A将有3,4本书。
用户不能自己购买或获取书籍! 用户可以向其他人提供书籍,每人最多5本书。
所以用户A给用户B提供了5本书,那应该是什么,但是如何?
这是我到目前为止所做的。
用户模型:
class User < ActiveRecord::Base
has_many :books, through: :user_books
has_many :user_books
书籍型号:
class Book < ActiveRecord::Base
has_many :users, through: :user_books
has_many :user_books
UserBook型号:
class UserBook < ActiveRecord::Base
belongs_to :book
belongs_to :user
要在我的用户展示模型中添加图书:
%h2 Add Books
.field.item
- Book.all.each do |book|
=link_to add_book_user_path(@user, book) do
.book
= book.title
路线:
resources :users, only: [:index, :show, :edit, :update] do
member { post 'add_book'}
end
用户控制器:
def add_book
@user = User.find(params[:id])
@book = Book.find(params[:id])
@user.update_attribute(book_ids << @book.id)
end
我应该做一些创建动作,更新不会添加正确的东西吗?
我收到此错误:
没有路线匹配[GET]“/users/3/add_book.1”
看起来很奇怪有add_book.1而不是add_book / 1(1是书的ID)。
任何帮助将不胜感激! 非常感谢, 克里斯!