0

だから私は、ユーザーがあらゆる種類の異なるものをお気に入りにできるようにするポリモーフィックなお気に入りモデルを持っています (そして、現在は問題なく動作していると思います)。私は今、彼らのお気に入りを破壊しようとしていますが、破壊するお気に入りを選択するのが難しく、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)
4

2 に答える 2

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
于 2012-09-18T16:44:28.870 に答える
0

マークアップにバグはあります_unfavorite.html.erbか? カンマが足りないようです。私は似たようなことに取り組んでおり、ポリモーフィック写真の削除に問題があります。

于 2012-09-18T20:55:31.417 に答える