I持っている3台のような、user
、article
、saved_article
、削除子テーブルのデータ
ユーザー
has_many : saved_articles, dependent: :destroy
条
has_many : saved_articles, dependent: :destroy
SavedArticle
id | article_id | user_id | #-> Table
belongs_to :user
belongs_to :article
SavedArticle
完全な成功を作成するが、私は削除しようとすると問題があり、
マイ削除アクション:
def remove
current_user.saved_articles.find(params[:id]).destroy
redirect_to home_path
end
フォームを削除します。
上部のコードに基づいて表示<%= form_for :remove, url: home_remove_path(id: current_user.saved_articles.id), method: :delete, remote: true do |f| %>
<%= f.button 'Remove'.html_safe, data: {disable_with: "<i class='fa fa-spinner fa-spin'></i> Deleting..."}, :class => 'btn btn-default btn-delete' %>
<% end %>
:
#SavedArticle :: ActiveRecord_Associations_CollectionProxyの未定義メソッド `id ':0x00000016f
私は以下のようにデバッグddd90 :
<%= debug current_user.saved_articles %>
は、テーブル内のすべての属性を示します。
私の質問は、saved_articles
テーブルから自分の特定の属性を削除する方法です。
おかげ
current_user.saved_articlesこれを設定していることを忘れないでください
def destroy @saved_article = SavedArticle.find(params[:id]) @saved_article.destroy redirect_to ..., notice: ... end
が続い
saved_article
<%= link_to 'Delete', @saved_article, method: :delete, data: { confirm: 'Are you sure?' }
を削除するには、あなたのビューにリンクを追加するには、
destroy
アクションでこれを置きます記事の配列のようなコレクションのプロキシを与える...コレクションのIDを取得することはできませんので、あなたはエラー –を取得し、IDにアクセスする方法? –
単純な理想的な方法 'home_remove_path(2)'はidをコントローラメソッドに送信します。ここで2はidです。フォームが呼び出されたときに、ビュー自体からIDを取得してください(2のように)harodedしないでください –