2012-02-14 70 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那里

相关问题