[英]Create a new view with different scopes in rails 4
我有一个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”,当我转到http://127.0.0.1:3000/posts/revisions
时,它将仅向我显示布尔字段“ visible”设置为false的帖子。 http://127.0.0.1:3000/posts/revisions
我在视图中的posts文件夹中创建了视图“ revision.html.erb”,然后将其放入route.rb中:
get 'posts/revisions'
我收到“找不到'id'= revisions的帖子”似乎正在尝试输入控制器中的before过滤器
before_action :set_post, only: [:show, :edit, :update, :destroy]
但是正如您所看到的,它被设置为仅显示,编辑,更新和销毁...
任何帮助表示赞赏。
出现此错误的原因是,Rails认为“修订”是一个ID,并试图为您查找一个显然不起作用的ID。
你可以这样做
# routes.rb
resources :posts do
get 'revisions', on: :collection
end
# posts_controller
def revisions
@posts = Post.where(...)
end
可以在有关路由的Rails指南中了解更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.