0
def some_action
  @posts = Post.all
  render partial: 'layouts/things'
end

在我的布局目录中,我有部分(_things.html.erb

我的其他部分工作正常。但它不会将部分抛出异常呈现为

Missing partial layouts/things with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "/my/path/appname/app/views"

编辑-1

  def some_action
    @posts = Post.all
    respond_to do |format|
      format.json
    end
  end

好的,我更改了我的控制器链接,但后来也出现了同样的异常。

编辑-2

我已经在我的views/controller_name/_some_action.json.erb

这是控制器

  def some_action
    @posts = Post.all
    respond_to do |format|
      format.json { render json: @posts }
    end
  end

我的 _some_action.json.erb 文件有

<%= render partial: 'shared/information', post: @posts.name %>

_information..js.erb在views共享目录中创建

MY _information.js.erb 的示例文本为

test

我从使用检查元素检查的控制器获得 json 响应。但它不是呈现我需要的实际文本(即,test

4

2 回答 2

1

好吧,恕我直言,您需要将您的部分命名为

_things.js.erb

或者没有?

于 2013-10-02T04:53:06.190 回答
1

正如 Jacub Kuchar 提到的,如果您尝试提供 JSON 响应,则应相应地命名您的部分(即_things.js.erb)。您还应该将它放在“共享”目录而不是“布局”中,因为它是部分的,而不是布局。

但是,我也会保留控制器渲染哪个视图的逻辑,并让视图本身处理它。

所以你的控制器可以简单地说:

respond_to :json # (and whatever other response types you want to support: xml, etc)

def some_action
  respond_with @posts = Post.all
end

然后在views/{controller name}/some_action.js.erb下有一个匹配的视图,它说:

<%= render partial: 'shared/things', posts: @posts %>

这样你的控制器就不会被视图逻辑污染。

于 2013-10-02T06:49:29.087 回答