繁体   English   中英

在Rails 4中创建具有不同范围的新视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM