所以我有一个多态的最喜欢的模型,允许用户喜欢各种不同的东西(目前工作正常的方法)。我现在正试图摧毁他们的最爱,但难以选择最喜欢破坏,我不知道如何启动form_for。
我的创建看起来像这样:
units_controller.rb - 在这里我为form_for
创建@favorite @favorite = Favorite.new
@favorable = @unit
_favorite.html.erb
<%= form_for([@user, @favorable, @favorite]) do |f| %>
<div><%= f.hidden_field :favorer %></div>
<%= f.submit "Favorite", class: "btn btn-large btn-primary" %>
<% end %>
favorites_controller.rb
def create
@user = User.find(params[:user_id])
@favorite = @favorable.favorites.new(params[:favorite])
@favorite.favorer = current_user
@favorite.save # Favorite id: 1, favorer: 2, favorable_id: 1, favorable_type: "Unit"
respond_to do |format|
format.html { redirect_to :back }
format.js
end
end
这是我到目前为止删除的内容,但我不确定如何调用form_for:
_unfavorite.html.erb
<%= form_for([@user, @favorable, @favorite], # problems here as @favorite is Favorite.new
html: { method: :delete }, remote: true) do |f| %>
<%= f.submit "Unfavorite", class: "btn btn-large" %>
<% end %>
favorites_controller.rb
def destroy
@favorite = Favorite.find(params[:id])
@favorite.destroy
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
我的关注模型使用了这个,但我不确定如何将它嵌入/ users / 1 / units / 1 / favorites
current_user.relationships.find_by_followed_id(@user)
答案 0 :(得分:0)
终于想通了......
def destroy
@user = current_user
@favorite = @favorable.favorites.where(favorer: current_user).first
@favorite.destroy
respond_to do |format|
format.html { redirect_to :back }
format.js
end
end
答案 1 :(得分:0)
您的_unfavorite.html.erb
标记中是否有错误?好像它缺少一个逗号。
我正在处理类似的事情,并且在删除多态照片时遇到了问题。