我正在尝试为我的 rails 网站创建一个“收藏夹”按钮。我有两个模型,用户和材料。我做了以下事情:
a)我创建了一个新表“favmats”,它在架构中看起来像这样:
create_table "favmats", :force => true do |t|
t.integer "user_id"
t.integer "material_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
b)我建立模型之间的关系:
class Favmat
belongs_to :user
belongs_to :material
end
class Materials
has_many :favmats
has_many :users, :through => :favmats
end
class Users
has_many :favmats
has_many :materials, :through => :favmats
end
c) 我在材料展示页面上创建了一个表单,该表单应该执行代码以在数据库中创建新关系。这似乎有问题。因此,代码是:
<%= form_for @favmat do |f| %>
<%= f.hidden_field :user_id, value: @user.id %>
<%= f.hidden_field :material_id, value: @material.id %>
<%= f.submit "Favourite" %>
<% end %>
d) 我在 favmats_controller 中创建了一个方法,如下所示:
def create
@material = Material.find(params[:id])
respond_to do |format|
if @favmat.save
format.html { redirect_to @material }
format.js
else
format.html { render 'new' }
format.js
end
end
end
不用说,这是行不通的。有什么想法我应该做什么?我最大的困惑是我应该在哪里创建一个新的 favmats 对象以及如何创建。