rails中的路由 - 在不同的视图中显示一个控制器的内容

时间:2014-06-03 09:56:52

标签: ruby-on-rails model-view-controller routing

我试图弄清楚如何将一个控制器的内容路由到另一个控制器的内容。 目前,我有两个控制器 -
1.静态页面控制器 - 这非常简单,它用于生成一个页面(带有可列表页面)

class StaticPagesController < ApplicationController
  def home
  end
end

2.Guides controller - 这是用户可以(当前)向db添加指南的地方。

class GuidesController < ApplicationController
  def home
  end

  def show
   @guide = Guide.find(params[:id])
  end

  def index
    @guide = Guide.all
  end

  def new
   @guide = Guide.new
  end

 def create
   @guide = Guide.new(guide_params)
   if @guide.save
     redirect_to '/guides'
   else
    render 'new'
  end
end

private

def guide_params
  params.require(:guide).permit(:title, :description, :image, :date, :date_end, :extra_info)
end

我想显示控制器的INDEX部分(目前在我的根目录中的'/ guides',或静态页面控制器中的'home'。

我试过摆弄所有这些,我的最后一个调用端口是routes.rb文件。然而,我并不是所有人都确定,这似乎足够直截了当,它让我无法做到这一点。

1 个答案:

答案 0 :(得分:1)

可能的解决方案之一是您使用:

class StaticPagesController < ApplicationController
  def home
     @guide = Guide.all
  end
end

并将指南的index,html.erb中的代码复制到静态页面的home.html.erb。 除此之外,你可以使用渲染:link

编辑:

使用partial显示指南索引:

class GuidesController < ApplicationController

  def index
    @guide = Guide.all
    render partial: "index"
  end
end

在您对指南重命名&#34; index.html.erb&#34;的观点中到&#34; _index.html.erb&#34;和 在static_pages / home.html.erb中添加:

<%= render :partial => "guides/index" %>