Rails - 在静态页面中列出模型的记录
Rails - Listing records of a model in a static page
我正在尝试将模型的记录(列出所有记录,如 Posts.all)调用到绑定到另一个控制器的视图。
所以,我想访问 Posts_controller 的索引操作,其中包含我想要访问的 .all 列表和 .group_by 列表,并将它们列在一个静态页面中Pages_controller(命名为 yonetim)
这只是为了列出管理员视图的 posts(就像活动管理员中的列表)。
我想,我不需要 post 任何代码,因为问题很抽象,但如果需要,我会编辑问题。
* 编辑澄清*
这是我的posts_controller.rb
class PostsController < ApplicationController
before_action :find_post, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]
load_and_authorize_resource
def index
@posts = Post.all.order('postdate DESC')
@posts_by_month = @posts.group_by { |post| post.postdate.strftime('%m - %Y')}
end
def show
end
def new
@post = current_user.posts.build
end
def create
@post = current_user.posts.build(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
def edit
end
def update
if @post.update(post_params)
redirect_to @post
else
render 'edit'
end
end
def destroy
@post.destroy
redirect_to root_path
end
private
def post_params
params.require(:post).permit(:id, :title, :body, :postdate)
end
def find_post
@post = Post.find(params[:id])
end
end
可以看出这是一个基本的博客应用。到达 root_path(posts#index 路由)的访问者可以看到基于月份和年份分组的 post 记录。
我想添加的是从我为管理界面(类似于活动管理 gem)创建的静态页面到达新的、编辑销毁和索引。@posts。
** 这是 pages_controller.rb **
class PagesController < ApplicationController
def yonetim
end
end
因此,当我点击 /yonetim(路由以获取页面#yonetim)时,我希望用户看到 posts 控制器的索引操作,其中 link 用于新建、显示、编辑和销毁记录。
***系统还设计了 admin boolean 和 cancan,因此如果用户未登录或没有管理员使用权限,他们将移至 root_path,但有例外。
我的问题是,我已经尝试了几乎所有方法来在 pages/yonetim 视图或 [=50] 中列出 posts#index 方法的 @posts 记录=] yonetim 方法。
这样我就可以在我的管理视图中列出它们并使用它们。
如果还需要什么,请告诉我。
提前致谢,
穆斯塔法
这里有多个选项 pages#yonetim
:
- 只需重定向到 'posts#index'
- 像
posts#index
一样分配视图变量(@posts
和 @posts_by_month
)并呈现模板 posts/index
.
- 像
posts#index
一样分配视图变量(@posts
和 @posts_by_month
)并渲染模板 pages/index
(本例中的默认视图)。
前两个选项的缺点是所有 links (new/edit/destroy) 将 link 到 PostsController
而不是 PagesController
,因为您正在重新使用为 PostsController
.
创建的视图
我正在尝试将模型的记录(列出所有记录,如 Posts.all)调用到绑定到另一个控制器的视图。
所以,我想访问 Posts_controller 的索引操作,其中包含我想要访问的 .all 列表和 .group_by 列表,并将它们列在一个静态页面中Pages_controller(命名为 yonetim)
这只是为了列出管理员视图的 posts(就像活动管理员中的列表)。
我想,我不需要 post 任何代码,因为问题很抽象,但如果需要,我会编辑问题。
* 编辑澄清*
这是我的posts_controller.rb
class PostsController < ApplicationController
before_action :find_post, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]
load_and_authorize_resource
def index
@posts = Post.all.order('postdate DESC')
@posts_by_month = @posts.group_by { |post| post.postdate.strftime('%m - %Y')}
end
def show
end
def new
@post = current_user.posts.build
end
def create
@post = current_user.posts.build(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
def edit
end
def update
if @post.update(post_params)
redirect_to @post
else
render 'edit'
end
end
def destroy
@post.destroy
redirect_to root_path
end
private
def post_params
params.require(:post).permit(:id, :title, :body, :postdate)
end
def find_post
@post = Post.find(params[:id])
end
end
可以看出这是一个基本的博客应用。到达 root_path(posts#index 路由)的访问者可以看到基于月份和年份分组的 post 记录。
我想添加的是从我为管理界面(类似于活动管理 gem)创建的静态页面到达新的、编辑销毁和索引。@posts。
** 这是 pages_controller.rb **
class PagesController < ApplicationController
def yonetim
end
end
因此,当我点击 /yonetim(路由以获取页面#yonetim)时,我希望用户看到 posts 控制器的索引操作,其中 link 用于新建、显示、编辑和销毁记录。
***系统还设计了 admin boolean 和 cancan,因此如果用户未登录或没有管理员使用权限,他们将移至 root_path,但有例外。
我的问题是,我已经尝试了几乎所有方法来在 pages/yonetim 视图或 [=50] 中列出 posts#index 方法的 @posts 记录=] yonetim 方法。
这样我就可以在我的管理视图中列出它们并使用它们。
如果还需要什么,请告诉我。
提前致谢, 穆斯塔法
这里有多个选项 pages#yonetim
:
- 只需重定向到 'posts#index'
- 像
posts#index
一样分配视图变量(@posts
和@posts_by_month
)并呈现模板posts/index
. - 像
posts#index
一样分配视图变量(@posts
和@posts_by_month
)并渲染模板pages/index
(本例中的默认视图)。
前两个选项的缺点是所有 links (new/edit/destroy) 将 link 到 PostsController
而不是 PagesController
,因为您正在重新使用为 PostsController
.