如何为page_layout设置自定义控制器

边距

我试图为page_layout设置自己的控制器,因为我想覆盖将其他模型放入视图的操作。

编辑:前端渲染现在可以工作。只有后端是越野车

从文档中,我做到了:

# config/alchemy/page_layouts.yml
- name: index
  unique: true
  elements: [article, other_element]
  autogenerate: [article]
  controller: 'my_custom'
  action: 'index'

并创建了一个app/controllers/my_custom_controller.rb

# app/controllers/my_custom_controller.rb
class MyCustomController < Alchemy::PagesController
  def index
    @some_values = Value.all
  end
end

我的routes.rb看起来像这样:

Rails.application.routes.draw do

  root 'my_custom#index'

  devise_for :users,
             path_names: { sign_in: 'login', sign_out: 'logout' },
             controllers: { sessions: 'users/sessions', passwords: 'users/passwords' }

  mount Alchemy::Engine => '/'

根页面在炼金术中具有page_type索引。

当我去的时候localhost:3000我得到了我想要的

但是在炼金术后端中,当编辑页面时,渲染时出现错误:

NoMethodError in Alchemy::Admin::Pages#show
Showing app/views/alchemy/elements/_some_element_view.html.erb where line #2 raised:

undefined method `each' for nil:NilClass
Extracted source (around line #2):
<div class="row">
  <% for @value in @some_values %>
      <%= render 'value/basic_view' %>
    <% end %>
</div>

可能是因为@some_values没有初始化,这意味着我的控制器没有被用来渲染它。难道我做错了什么?

Edit2:也许我走在错误的轨道上。我想要一个Alchemy元素,该元素可以从数据库(自定义模型)中渲染东西。我所做的是创建一个呈现@some_values的元素。通过在可以放置此元素的每个页面类型上指定我的自定义控制器,我允许我的编辑者将这些@some_values放置在所需的位置。

电视播放器

看来这不是您想要的正确方法。由于路由原因,引入了用于页面布局的自定义控制器。这样,编辑者可以管理自定义控制器的导航。它们不用于装饰默认元素和页面呈现。

您可能想要的是on_page_layout回调:http : //www.rubydoc.info/github/AlchemyCMS/alchemy_cms/Alchemy/OnPageLayout

在您的情况下:

class ApplicationController < ActionController::Base
  extend Alchemy::OnPageLayout

  on_page_layout :foo do
    @some_values = Value.all
  end
end

或者,甚至更容易地,将值加载到元素视图中。有点PHPish,但还可以。

编辑:

从性能的角度来看,在控制器中使用低级别的Rails缓存是一个好习惯:

...
on_page_layout :foo do
  @some_values = Rails.cache.fetch('some/cache/key', expires_in: 10.minutes) do
    Value.all
  end
end
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为我的 Laravel 自定义包的控制器创建别名

来自分类Dev

如何为 Core api 控制器测试自动 ModelState 的自定义属性方法验证?

来自分类Dev

如何在果园设置自定义控制器工厂?

来自分类Dev

如何在视图控制器的背景中设置自定义颜色

来自分类Dev

如何在SAP UI中的控制器中定义自定义控制器?

来自分类Dev

如何从角度控制器调用自定义指令

来自分类Dev

自定义控制器动作

来自分类Dev

如何自定义fbfrienpickerview控制器并在自定义表视图中显示

来自分类Dev

如何在ZF2中为单个控制器动作设置自定义标头?

来自分类Dev

AngularJS如何在自定义指令标签内使用ng-model,动态设置控制器?

来自分类Dev

AngularJS-在访问DOM的自定义指令中设置控制器的$ scope变量

来自分类Dev

TYPO3:在扩展控制器中添加自定义设置功能

来自分类Dev

将我的自定义类的委托设置为我的视图控制器

来自分类Dev

EVE-定义自定义烧瓶控制器

来自分类Dev

控制器方法上的自定义验证器

来自分类Dev

如何重用在Storyboard控制器中定义为原型单元的自定义UITableViewCell

来自分类Dev

Spring MockMVC-如何模拟在控制器外部运行的自定义验证器

来自分类Dev

Angular - 控制器中的自定义验证器功能:如何访问“this”?

来自分类Dev

如何在Rails 4中添加要设计的自定义字段并自定义注册控制器?

来自分类Dev

如何将自定义对象从自定义身份验证提供程序传递到控制器?

来自分类Dev

JavaFx 如何为自定义 gui 构建器设置 FXML 加载器

来自分类Dev

MVC 控制器的自定义控制器激活器

来自分类Dev

角负载自定义控制器

来自分类Dev

用自定义动画关闭视图控制器?

来自分类Dev

Laravel 5自定义404控制器

来自分类Dev

CakePHP控制器自定义功能无法识别

来自分类Dev

自定义设计:会话控制器故障

来自分类Dev

Azure自定义控制器/ API .Net后端

来自分类Dev

JavaFX自定义控制器工厂

Related 相关文章

  1. 1

    如何为我的 Laravel 自定义包的控制器创建别名

  2. 2

    如何为 Core api 控制器测试自动 ModelState 的自定义属性方法验证?

  3. 3

    如何在果园设置自定义控制器工厂?

  4. 4

    如何在视图控制器的背景中设置自定义颜色

  5. 5

    如何在SAP UI中的控制器中定义自定义控制器?

  6. 6

    如何从角度控制器调用自定义指令

  7. 7

    自定义控制器动作

  8. 8

    如何自定义fbfrienpickerview控制器并在自定义表视图中显示

  9. 9

    如何在ZF2中为单个控制器动作设置自定义标头?

  10. 10

    AngularJS如何在自定义指令标签内使用ng-model,动态设置控制器?

  11. 11

    AngularJS-在访问DOM的自定义指令中设置控制器的$ scope变量

  12. 12

    TYPO3:在扩展控制器中添加自定义设置功能

  13. 13

    将我的自定义类的委托设置为我的视图控制器

  14. 14

    EVE-定义自定义烧瓶控制器

  15. 15

    控制器方法上的自定义验证器

  16. 16

    如何重用在Storyboard控制器中定义为原型单元的自定义UITableViewCell

  17. 17

    Spring MockMVC-如何模拟在控制器外部运行的自定义验证器

  18. 18

    Angular - 控制器中的自定义验证器功能:如何访问“this”?

  19. 19

    如何在Rails 4中添加要设计的自定义字段并自定义注册控制器?

  20. 20

    如何将自定义对象从自定义身份验证提供程序传递到控制器?

  21. 21

    JavaFx 如何为自定义 gui 构建器设置 FXML 加载器

  22. 22

    MVC 控制器的自定义控制器激活器

  23. 23

    角负载自定义控制器

  24. 24

    用自定义动画关闭视图控制器?

  25. 25

    Laravel 5自定义404控制器

  26. 26

    CakePHP控制器自定义功能无法识别

  27. 27

    自定义设计:会话控制器故障

  28. 28

    Azure自定义控制器/ API .Net后端

  29. 29

    JavaFX自定义控制器工厂

热门标签

归档