2016-03-29 9 views
1

ユーザに埋め込まれている「作品」の配列から特定の「作品」を削除しようとしています。レールとモンゴイドのメソッドを破棄します

<% @works.each do |f| %> 
     <%= link_to 'Destroy', profiles_destroy_path(f), data: {:confirm => 'Are you sure?'}, :method => :delete %> 
<% end %> 

そして、私のコントローラに: - - ::

-

def destroy 
@work = current_user.works.find(params[:id]) 
@work.destroy 
respond_to do |format| 
    format.html { redirect_to root_url } 
end 
end 

私は、次のエラーを取得していますビューの私work.html.erbファイルで

Mongoid::Errors::InvalidFind at /profiles/destroy.56fa4d2f498b5908a002e2e8 

PS - 私は新しいレールです。

答えて

0

params[:idを確認してください]はnilではありません。セッション開始時にはIDはありません。上記の例外はMongoid::Errors::InvalidFindです。

0

削除アクションがデフォルトでパスを持っていません。..

あなたのコントローラから破壊するアクションを呼び出します
<%= link_to 'Destroy', profiles_path(f), data: {confirm: 'Are you sure?'}, method: :delete %> 

params [:id]がnilでないことを確認してください。

PS:使用レール4注釈ファンの回答に誤りがある可能性があり

+1

rails 4 annotation?また、hashrocketsには何も問題ありません。 –

+0

アップス申し訳ありませんが、それはレール4ではない、それはルビーコアからです。それは何も間違っていませんが、私のために不必要な冗長さを追加します。 @SergioTulentsev :) –

+0

@JuanManuelRodulfoSalcedoこれはparams [:id]がnilであることを示しています。これを解決する方法を教えてください。 routes.rbファイルに何かを書く必要がありますか? –

0

((=>)ロケットを使用しないように)。

<%= link_to 'Destroy', profile_path(f), method: :delete, data: {confirm: 'Are you sure?'} %> 

注:私はあなたを信じている

が欲しい単数の「PROFILE_PATH」の代わりに「profiles_path」

これがアクションを破壊するには、showアクションと同じパスを使用しているために、しかし、使用していますGETの代わりにDELETEメソッドを使用します。 (あなたの端末で「レーキルート」を実行し、2つのルートを比較することで観測できます)

関連する問題