0

ユーザーとマテリアルの 2 つのモデルがあります。ユーザーは素材をお気に入りにすることができます。私は関係を設定しており、お気に入りにするためのコードは正常に機能しますが、お気に入りから外すためのコードを正しく取得できないようです。お気に入りを無効にするための次のコードがあります。

マテリアル コントローラー(unfavorite form がある show アクション内)

@favourite = Favmat.where(:user_id => current_user.id, :material_id => @material.id)

注: このコードを使用して、ビューに表示するボタンを決定します。レコードが存在すると仮定すると、次のようになります。

意見

<%= form_for @favourite, :method => :delete do |f| %>
<%= f.submit "Unfavourite" %>
<% end %>

問題はここにあるようです。私が何をしても、favmats コントローラーの destroy アクションへの作業ルートが得られないようです。代わりに form_tag を使用してみましたが、機能しない非常に奇妙なルートが得られます。

お気に入りコントローラー

def destroy
  Favmat.find(params[:id]).destroy
  respond_to do |format|
    format.html { redirect_to @material }
    format.js
  end
end

アップデート

また、フォームの代わりに link_to を使用してみました。コードは次のとおりです。

<%= link_to "Unfavourite", favmat_path, method: "delete" %>

奇妙なことに、これの html は favmat オブジェクトではなく、マテリアルから favmat id を取得します。そこに favmat オブジェクト ID を取得する方法がわかりません。何も機能していないようです。

4

1 に答える 1