2012-02-14 71 views
2

我已經安裝了Enki(博客)gem https://github.com/xaviershay/enki以及使用Devise進行註冊的Forem(論壇)gem https://github.com/radar/forem。一切似乎除了當我點擊一個鏈接Rails::method =>:刪除尋找'show'動作

<li><%= link_to t('delete', :scope => 'forem.topic'), topic_post_path(@topic, post), :method => :delete, :confirm => t("are_you_sure") %></li> 

刪除帖子(或其他東西)論壇內進行工作,我收到此錯誤信息

Unknown action 

The action 'show' could not be found for Forem::PostsController 

我注意到,培訓就業部鏈接有:method => :delete所以這不應該發生。另外,當我沒有使用Enki的時候使用Forem,我不會遇到這個問題。我認爲由於某種原因,rails應用程序沒有看到:method =>:delete,所以該方法被註冊爲「show」而不是destroy操作,但我不知道爲什麼。在日誌文件中,它說

* REQUEST_METHOD : GET – 

我猜有某種路由衝突的多數民衆贊成禁用:方法=>:刪除,但我無法弄清楚。

的config/routes.rb中

Enki::Application.routes.draw do 
    mount Forem::Engine, :at => "/forums" 
    devise_for :users 

    namespace 'admin' do 
    resource :session 

    resources :posts, :pages do 
     post 'preview', :on => :collection 
    end 
    resources :comments 
    resources :undo_items do 
     post 'undo', :on => :member 
    end 

    match 'health(/:action)' => 'health', :action => 'index', :as => :health 

    root :to => 'dashboard#show' 
    end 

    resources :archives, :only => [:index] 
    resources :pages, :only => [:show] 

    constraints :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/ do 
    get ':year/:month/:day/:slug/comments' => 'comments#index' 
    post ':year/:month/:day/:slug/comments' => 'comments#create' 
    get ':year/:month/:day/:slug/comments/new' => 'comments#new' 
    get ':year/:month/:day/:slug' => 'posts#show' 
    end 

    scope :to => 'posts#index' do 
    get 'posts.:format', :as => :formatted_posts 
    get '(:tag)', :as => :posts 
    end 

    root :to => 'posts#index' 
end 

耙路線

forem  /forums           {:to=>Forem::Engine} 
     new_user_session GET /users/sign_in(.:format)      {:action=>"new", :controller=>"devise/sessions"} 
      user_session POST /users/sign_in(.:format)      {:action=>"create", :controller=>"devise/sessions"} 
    destroy_user_session DELETE /users/sign_out(.:format)      {:action=>"destroy", :controller=>"devise/sessions"} 
      user_password POST /users/password(.:format)      {:action=>"create", :controller=>"devise/passwords"} 
     new_user_password GET /users/password/new(.:format)     {:action=>"new", :controller=>"devise/passwords"} 
     edit_user_password GET /users/password/edit(.:format)     {:action=>"edit", :controller=>"devise/passwords"} 
         PUT /users/password(.:format)      {:action=>"update", :controller=>"devise/passwords"} 
cancel_user_registration GET /users/cancel(.:format)       {:action=>"cancel", :controller=>"devise/registrations"} 
     user_registration POST /users(.:format)        {:action=>"create", :controller=>"devise/registrations"} 
    new_user_registration GET /users/sign_up(.:format)      {:action=>"new", :controller=>"devise/registrations"} 
    edit_user_registration GET /users/edit(.:format)       {:action=>"edit", :controller=>"devise/registrations"} 
         PUT /users(.:format)        {:action=>"update", :controller=>"devise/registrations"} 
         DELETE /users(.:format)        {:action=>"destroy", :controller=>"devise/registrations"} 
      admin_session POST /admin/session(.:format)      {:action=>"create", :controller=>"admin/sessions"} 
     new_admin_session GET /admin/session/new(.:format)     {:action=>"new", :controller=>"admin/sessions"} 
     edit_admin_session GET /admin/session/edit(.:format)     {:action=>"edit", :controller=>"admin/sessions"} 
         GET /admin/session(.:format)      {:action=>"show", :controller=>"admin/sessions"} 
         PUT /admin/session(.:format)      {:action=>"update", :controller=>"admin/sessions"} 
         DELETE /admin/session(.:format)      {:action=>"destroy", :controller=>"admin/sessions"} 
    preview_admin_posts POST /admin/posts/preview(.:format)     {:action=>"preview", :controller=>"admin/posts"} 
      admin_posts GET /admin/posts(.:format)       {:action=>"index", :controller=>"admin/posts"} 
         POST /admin/posts(.:format)       {:action=>"create", :controller=>"admin/posts"} 
      new_admin_post GET /admin/posts/new(.:format)      {:action=>"new", :controller=>"admin/posts"} 
     edit_admin_post GET /admin/posts/:id/edit(.:format)     {:action=>"edit", :controller=>"admin/posts"} 
       admin_post GET /admin/posts/:id(.:format)      {:action=>"show", :controller=>"admin/posts"} 
         PUT /admin/posts/:id(.:format)      {:action=>"update", :controller=>"admin/posts"} 
         DELETE /admin/posts/:id(.:format)      {:action=>"destroy", :controller=>"admin/posts"} 
    preview_admin_pages POST /admin/pages/preview(.:format)     {:action=>"preview", :controller=>"admin/pages"} 
      admin_pages GET /admin/pages(.:format)       {:action=>"index", :controller=>"admin/pages"} 
         POST /admin/pages(.:format)       {:action=>"create", :controller=>"admin/pages"} 
      new_admin_page GET /admin/pages/new(.:format)      {:action=>"new", :controller=>"admin/pages"} 
     edit_admin_page GET /admin/pages/:id/edit(.:format)     {:action=>"edit", :controller=>"admin/pages"} 
       admin_page GET /admin/pages/:id(.:format)      {:action=>"show", :controller=>"admin/pages"} 
         PUT /admin/pages/:id(.:format)      {:action=>"update", :controller=>"admin/pages"} 
         DELETE /admin/pages/:id(.:format)      {:action=>"destroy", :controller=>"admin/pages"} 
      admin_comments GET /admin/comments(.:format)      {:action=>"index", :controller=>"admin/comments"} 
         POST /admin/comments(.:format)      {:action=>"create", :controller=>"admin/comments"} 
     new_admin_comment GET /admin/comments/new(.:format)     {:action=>"new", :controller=>"admin/comments"} 
     edit_admin_comment GET /admin/comments/:id/edit(.:format)    {:action=>"edit", :controller=>"admin/comments"} 
      admin_comment GET /admin/comments/:id(.:format)     {:action=>"show", :controller=>"admin/comments"} 
         PUT /admin/comments/:id(.:format)     {:action=>"update", :controller=>"admin/comments"} 
         DELETE /admin/comments/:id(.:format)     {:action=>"destroy", :controller=>"admin/comments"} 
    undo_admin_undo_item POST /admin/undo_items/:id/undo(.:format)   {:action=>"undo", :controller=>"admin/undo_items"} 
     admin_undo_items GET /admin/undo_items(.:format)      {:action=>"index", :controller=>"admin/undo_items"} 
         POST /admin/undo_items(.:format)      {:action=>"create", :controller=>"admin/undo_items"} 
    new_admin_undo_item GET /admin/undo_items/new(.:format)     {:action=>"new", :controller=>"admin/undo_items"} 
    edit_admin_undo_item GET /admin/undo_items/:id/edit(.:format)   {:action=>"edit", :controller=>"admin/undo_items"} 
     admin_undo_item GET /admin/undo_items/:id(.:format)     {:action=>"show", :controller=>"admin/undo_items"} 
         PUT /admin/undo_items/:id(.:format)     {:action=>"update", :controller=>"admin/undo_items"} 
         DELETE /admin/undo_items/:id(.:format)     {:action=>"destroy", :controller=>"admin/undo_items"} 
      admin_health  /admin/health(/:action)(.:format)    {:action=>"index", :controller=>"admin/health"} 
       admin_root  /admin(.:format)        {:controller=>"admin/dashboard", :action=>"show"} 
       archives GET /archives(.:format)        {:action=>"index", :controller=>"archives"} 
        page GET /pages/:id(.:format)       {:action=>"show", :controller=>"pages"} 
         GET /:year/:month/:day/:slug/comments(.:format)  {:year=>/\d{4}/, :month=>/\d{2}/, :day=>/\d{2}/, :controller=>"comments", :action=>"index"} 
         POST /:year/:month/:day/:slug/comments(.:format)  {:year=>/\d{4}/, :month=>/\d{2}/, :day=>/\d{2}/, :controller=>"comments", :action=>"create"} 
         GET /:year/:month/:day/:slug/comments/new(.:format) {:year=>/\d{4}/, :month=>/\d{2}/, :day=>/\d{2}/, :controller=>"comments", :action=>"new"} 
         GET /:year/:month/:day/:slug(.:format)    {:year=>/\d{4}/, :month=>/\d{2}/, :day=>/\d{2}/, :controller=>"posts", :action=>"show"} 
     formatted_posts GET /posts.:format         {:controller=>"posts", :action=>"index"} 
        posts GET /(:tag)(.:format)        {:controller=>"posts", :action=>"index"} 
        root  /            {:controller=>"posts", :action=>"index"} 
+0

您是否檢查日誌文件中的HTTP方法? – nambrot 2012-02-14 07:32:20

+0

@nambrot * REQUEST_METHOD:GET – Leahcim 2012-02-14 07:48:56

回答

5

確保被包含在佈局文件你的JavaScript:

<%= javascript_include_tag :defaults %> #Rails 3.0.x 
<%= javascript_include_tag :application %> #Rails 3.1+ 
<%= csrf_meta_tag %> 

對於刪除,你應該使用button_to來代替。 Link_to不應該用於HTTP POST請求。

+1

這應該是'<%= javascript_include_tag:application%>'如果他使用的是Rails 3.1。然後應用程序應該包含適當的jQuery文件。 – 2012-02-14 19:32:24

-2

看起來你必須在控制器中沒有方法show。只需定義它。

+0

但爲什麼刪除方法需要顯示操作?刪除使用破壞不顯示。如果我定義了一個show動作,它不會根據需要刪除。 – Leahcim 2012-02-14 07:24:16

+0

這是相同的路線不同,只有通過http方法 – ck3g 2012-02-14 07:27:04

+0

都應該罰款=)您可以嘗試 – ck3g 2012-02-14 07:27:49

0

您需要在您的Gemfile jQuery的Rails的寶石

gem 'jquery-rails' 

然後,你必須捆綁運行安裝並重新啓動服務器。這是因爲即使你已經在你的layout.html.erb中包含了jQuery框架,你也需要jQuery的適配器來使用unobstrusive腳本。

0

這是因爲rails jquery_ujs文件沒有得到加載在您的JavaScript。

在佈局文件執行此操作,normaly命名爲application.html.erb

<%= javascript_include_tag "application" %> 

這將包括的application.js文件,還包括你的jquery_ujs文件

您應該檢查應用程序/ assets/application.js文件這條線存在那裏

//= require jquery_ujs 

如果不是自己添加它。

它可以治好:)

提示:當您不使用的application.js

1 - 這可能會導致:

其中一個可能是問題的原因

2-您正在使用不同的文件包含庫,並忘記inlucde jquery_ujs那裏

相關問題