我有一个Post模型:
class Post < ActiveRecord::Base
belongs_to :category
belongs_to :user
scope :my_revisions, ->(user){ where("posts.user_id = ?", user.id)}
scope :visible_posts, -> {where(visible: true)}
scope :pending_posts, -> {where(visible: false)}
end
当我去http://127.0.0.1:3000/posts
时,我会看到我的所有帖子。我现在要做的是创建一个新视图“revision.html.erb”,它将向我显示布尔字段“visible”设置为false的帖子,当我转到http://127.0.0.1:3000/posts/revisions
我在视图的posts文件夹中创建了视图“revision.html.erb”,并输入routes.rb:
get 'posts/revisions'
我收到“找不到帖子'id'=修订版” 看起来它正试图进入控制器中的前置过滤器
before_action :set_post, only: [:show, :edit, :update, :destroy]
但正如您所看到的,它设置为仅显示,编辑,更新和销毁......
感谢任何帮助。
答案 0 :(得分:0)
这个错误的原因是Rails认为&#34;修订&#34;是一个id,并试图为你查找一个显然无法工作的人。
你可以这样做
# routes.rb
resources :posts do
get 'revisions', on: :collection
end
# posts_controller
def revisions
@posts = Post.where(...)
end
中详细了解相关内容