缺少部分铁路

时间:2013-10-02 04:30:28

标签: ruby-on-rails ruby-on-rails-3

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

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

test

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

2 个答案:

答案 0 :(得分:1)

嗯,恕我直言,你需要命名你的部分

_things.js.erb

还是不?

答案 1 :(得分: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 %>

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