5

正しい安らかなセットアップを使用していると信じているため、これに完全に困惑していますが、リストを削除できないようです。

私は次のものを持っています:

コントローラ:

def destroy
    @list = List.find(params[:id])
    @list.destroy
    redirect_to lists_path
end 

#37 def show
#38     @list = List.find(params[:id])
#39 end

Index.html.haml

- @list.each do |list| 
    ...
    = link_to "Delete", list_path(list), method: :delete, data: { confirm: 'Are you certain you want to delete this?' }
    ...

ルート:

ListApp::Application.routes.draw do
    devise_for :users
    resources :lists

次の正しい rake ルート出力が得られます。

           lists GET    /lists(.:format)               lists#index                                                                                                                                                                     
                 POST   /lists(.:format)               lists#create                                                                                                                                                                    
        new_list GET    /lists/new(.:format)           lists#new                                                                                                                                                                       
       edit_list GET    /lists/:id/edit(.:format)      lists#edit                                                                                                                                                                      
            list GET    /lists/:id(.:format)           lists#show                                                                                                                                                                      
                 PATCH  /lists/:id(.:format)           lists#update                                                                                                                                                                    
                 PUT    /lists/:id(.:format)           lists#update                                                                                                                                                                    
                 DELETE /lists/:id(.:format)           lists#destroy

しかし、本番環境で実行すると、まだ次のエラーが発生します。

I, [2013-09-10T15:27:40.338022 #453]  INFO -- : Started GET "/lists/2" for 81.159.35.212 at 2013-09-10 15:27:40 +0000                                                                                                                          
I, [2013-09-10T15:27:40.340626 #453]  INFO -- : Processing by ListsController#show as HTML                                                                                                                                                     
I, [2013-09-10T15:27:40.340867 #453]  INFO -- :   Parameters: {"id"=>"2"}                                                                                                                                                                      
I, [2013-09-10T15:27:40.354092 #453]  INFO -- : Completed 500 Internal Server Error in 13ms                                                                                                                                                    
F, [2013-09-10T15:27:40.359807 #453] FATAL -- :                                                                                                                                                                                                
NameError (undefined local variable or method `list' for #<ListsController:0x000000050a7c38>):                                                                                                                                                 
  app/controllers/lists_controller.rb:38:in `show'  

誰かがこれを引き起こしている可能性があることを知っていれば、どんな助けも大歓迎です:)

4

5 に答える 5

6

ログ出力を見ると、リンクは DELETE リクエストではなく GET リクエストを送信しています。Rails では、JavaScript を介して とのリンクmethod: :deleteが GET リクエストから DELETE リクエストに変更されます。

Rails のデフォルトの jquery javascript ファイルを application.js または 経由= javascript_include_tag :defaultsで含めていないのではないかと思います。これにより、Rails の jquery および jquery.ujs が取得されます。

削除リンクを使用して、jquery と jquery.ujs がページに読み込まれていることを確認できますか?

= javascript_include_tag :defaultsまたは、ビュー/レイアウトに追加して、リンクが機能し始めるかどうかを確認してください。

また、詳細については、この Railscasts on Unobtrusive Javascriptを見てフォローすることをお勧めします。

于 2013-09-10T17:39:51.823 に答える
2

list_path ではなく、lists_path にリンクしてみてください。あなたのルートを見てください。

于 2013-09-10T15:39:52.210 に答える