如何在父控制器中呈现视图

时间:2018-01-17 18:53:55

标签: ruby-on-rails ruby inheritance view ruby-on-rails-5

我想将值从父控制器传递到子视图,或者理想情况下直接从父控制器渲染视图。

这是我的父控制器:

class SuperBlogPostsController < ApplicationController


def index(country)
    if country == "AUSTRALIA"
      @posts = AustraliaBlogPost.all
    hash = { posts: @posts, featured_post: AustraliaBlogPost.find_by(featured_post: true) }
    respond_to do |format|
        format.html {render 'super_blog_post/index'}
        format.json {render json: hash}
    end
end
end

def show(country)
    if country == "AUSTRALIA"
        @post = AustraliaBlogPost.find(params[:id])
        respond_to do |format|
            format.html {render 'super_blog_post/show'}
        format.json {render json: @post}
    end
end

这是我的孩子:

class AustraliaBlogPostsController < SuperBlogPostsController

  def index
    super(country: 'AUSTRALIA')
  end

  def show
    super(country: 'AUSTRALIA')
  end
end

这是我得到的错误,即使我在网址末尾追加.json:

Error Message

是否可以在父级中进行视图渲染,或者至少将父级生成的变量的返回值传递给子级?如果我一点都不清楚,请告诉我!

谢谢!

1 个答案:

答案 0 :(得分:0)

您的父控制器方法接受普通参数,而不是named parameter

而不是:

data[j]

你需要

super(country: 'AUSTRALIA')

但我必须说,你的控制器的整个逻辑并没有多大意义。