1

最後のデータベースレコードを削除しようとしていますが、リンクを押すと、ページが更新され、何も表示されません:/

これが私のコントローラーです:

  def delete
    @todo_items = Todo.last
    @todo_items.delete
  end

&これが私の見解です

<h1>Shared Todo App</h1>
  <p>All your todos here</p>
<% @todo_items.each do |t| %>
<li><%= t.todo_item %>
<% end %>

  <%= link_to 'Delete', todo_item, confirm: 'Are you sure?', method: :delete %>

何か案は?

4

4 に答える 4

1

まず、アクション名はでdestroyはなく、である必要がありdeleteます。willのリンクmethod: :deleteは、デフォルトで。という名前のアクションにマップされますdestroy。詳細については、このガイドを参照してください。

次に、アクションの最後にリダイレクトしたい場合がありますdestroy。たとえばredirect_to root_path、、または適切なものは何でも。

于 2012-11-04T18:06:33.477 に答える
1

同じチュートリアルを実行すると、同じエラーが発生しました

コントローラを次のように変更しました:

def destroy
@todo_items = Todo.last
@todo_items.destroy
end

ビューの名前をdestroy.html.erbに変更しました。

これは私にとってはうまくいくようです。

于 2014-02-15T19:31:39.570 に答える
0

前に述べたように、あなたの行動は破壊と呼ばれるべきですが、それはここでは問題ではありません。ページが更新されているだけの場合は、DELETEメソッドを呼び出していないことを意味します。そうでない場合は、「アクションが見つかりません」エラーが表示されるか、Railsがデフォルトのdestroyメソッドを実行する必要があります。

あなたの問題はおそらくjavascriptにあります。有効になっていることと、application.html.erbページに次のインポートがあることを確認してください。

<%= javascript_include_tag :all %>

または、少なくとも、rails.jsファイルは、デフォルトのメソッドを変更したときにlink_toメソッドを機能させるファイルです。

<%= javascript_include_tag "rails" %>
于 2012-11-04T20:06:54.653 に答える
0

コントローラのアクションは:destroy

def destroy
  @todo_items = Todo.last
  @todo_items.delete
end

Railsには7つのアクションがあり、これには、、、、、、およびnewshow含まeditれます。indexdestroyupdate

したがって、要求はdestroyアクションになります。だからこれを試してみてください、これはうまくいくでしょう。

于 2012-11-04T18:05:40.827 に答える