相同的控制器,但轨道中的条件布局?

时间:2015-04-15 22:41:23

标签: ruby-on-rails

我有一个信息中心/帖子和一个使用相同'帖子的首页/帖子。控制器模型。

我基本上希望仪表板和首页都可以使用所有操作,但布局不同。

对我的情况最好的做法是什么?

2 个答案:

答案 0 :(得分:1)

我会创建两个新的控制器,它们继承了你现在使用的'posts'控制器。然后只需覆盖那些新控制器中的布局方法。

如果你不能这样做,layout也会采用符号而不是字符串。

即。将layout :dashboard_or_frontpage添加到该控制器。通过指定符号而不是字符串,Rails将使用该名称调用该方法,期望返回一个字符串来定义要使用的布局:http://apidock.com/rails/ActionView/Layouts/ClassMethods/layout

在不了解您的设置的情况下,我无法帮助您了解决定要显示的布局所需的逻辑。但它可能看起来像这样。

class PostsController < ApplicationController

  layout :dashboard_or_frontpage

  private

  def dashboard_or_front_page
    if on_the_dashboard?
      "dashboard"
    else
      "front_page"
    end
  end
end

答案 1 :(得分:1)

看一下这篇文章http://guides.rubyonrails.org/layouts_and_rendering.html,您可以使用:layout param和render方法。