【问题标题】:handling exception in nested resources with Mongoid::Errors::DocumentNotFound rails 3.1使用 Mongoid::Errors::DocumentNotFound rails 3.1 处理嵌套资源中的异常
【发布时间】:2012-01-19 15:13:21
【问题描述】:

我的 application_controller.rb

中有
class ApplicationController < ActionController::Base
  protect_from_forgery
   rescue_from Mongoid::Errors::DocumentNotFound, :with => :render_not_found
  def render_not_found
   render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
  end
end

然后我打电话

此代码在我的 routes.rb 中运行良好:

resources :posts

问题是如果我在 routes.rb 中有这样的嵌套资源:

resources :users do
 resources :posts
end

我在 posts_controller.rb

中有这个
class PostsController < ApplicationController

end

现在这个父 :users 不起作用!。我在 posts_controller.rb 这个嵌套资源的每个操作中都写了这个,以便正常工作,例如..

def show
@post = Post.find(params[:id])
respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @post }
end
rescue
 render_not_found
end

【问题讨论】:

  • @JatinGanhotra 我已经编辑了这个问题。它确实适用于来自resources :usersresources :posts 输出。如果我输入resources :users do resources :posts end。不工作。谢谢
  • 在这里发布rake routes的输出。

标签: ruby-on-rails ruby-on-rails-3 exception-handling mongoid


【解决方案1】:

在您的控制器代码中,

class Users::PostsController < ApplicationController

end

您有Users::Posts,但您没有在上面的路线中指定PostsController 的位置。

【讨论】:

  • 谢谢,如何在 routes.rb 中指定 PostsController 的位置?谢谢。
  • 抱歉,我已经编辑了我已经与:controller =&gt; 'users/posts' 核对过的帖子,但不起作用:(
  • 试试这个:resources :posts, :controller =&gt;"users/posts"
  • 为什么将PostsController 放在users 文件夹中?如果没有具体原因,请将其与UsersController 一起放在控制器目录中。删除Users:: 部分并尝试一切正常。
  • 我已经检查了目录用户的帖子输出并且不起作用:(。问题不在于目录:(
猜你喜欢
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多