查找destroy动作的多态关联

时间:2012-09-17 20:08:21

标签: ruby-on-rails polymorphic-associations

所以我有一个多态的最喜欢的模型,允许用户喜欢各种不同的东西(目前工作正常的方法)。我现在正试图摧毁他们的最爱,但难以选择最喜欢破坏,我不知道如何启动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)

2 个答案:

答案 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标记中是否有错误?好像它缺少一个逗号。 我正在处理类似的事情,并且在删除多态照片时遇到了问题。