我正在嘗試爲我的rails站點創建一個「最喜歡的」按鈕。我有兩種模型,用戶和材料。我也做了以下內容:如何在rails 3.2中創建收藏夾關係
一)我創建了一個新表「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)我在材料展示頁面上創建了一個表單,該表單應該執行代碼來在數據庫中創建新的關係。這似乎有問題。該代碼是這樣的:
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
不用說,這是行不通的:
<%= 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創建的方法。任何想法我應該做什麼?我最大的困惑之處是我應該創建一個新的偏好對象以及如何創建。
什麼部分不起作用?錯誤信息?路由問題? – davidfurber
你可以使用[社會化](https://github.com/Shreshtt/socialization)寶石。它提供了許多功能。您可以使用其Like功能作爲最愛。 – SoftwareGeek
嗯實際上你正在使用find方法並保存記錄。您需要使用.new方法來啓動記錄,傳遞params記錄,然後使用.save方法記錄保存記錄。 – bunty