Ruby on rails 缺少带轨道的部分

Ruby on rails 缺少带轨道的部分,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,在我的layouts目录中,我有部分内容(\u things.html.erb) 我的其他部分工作正常。但它不会将部分抛出异常呈现为 def some_action @posts = Post.all render partial: 'layouts/things' end 编辑-1 Missing partial layouts/things with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :bu

在我的layouts目录中,我有部分内容(
\u things.html.erb

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

def some_action
  @posts = Post.all
  render partial: 'layouts/things'
end
编辑-1

Missing partial layouts/things with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "/my/path/appname/app/views"
好的,我改变了我的控制器链接,但也出现了同样的异常

编辑-2

我已经在我的
视图/controller\u name/\u中创建了一些\u action.json.erb

这是控制器

  def some_action
    @posts = Post.all
    respond_to do |format|
      format.json
    end
  end
My_some_action.json.erb文件已被删除

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

并在视图共享目录中创建了
\u information..js.erb

MY_information.js.erb的示例文本如下

测试


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

好吧,我想你需要给你的部分命名

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

或者否?

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

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

因此,您的控制器可以简单地说:

_things.js.erb
然后在views/{controller name}/some_action.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


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

您是否试图对该操作发出JSON请求?查看错误消息中的
:formats
选项。是的,这是一个带有
json
datatype的ajax请求。也许这会对您有所帮助:您的视图命名错误。您需要的不是
\u some\u action.json.erb
,而是
some\u action.json.erb
(没有初始下划线-只有部分的名称,而不是视图模板,以下划线开头)。此外,调用变量来存储@posts'post也没有意义——保持复数形式。另外,
\u information..js.erb
中的两个点应该只有一个。可能是打字错误吧?也许您需要在键入时放慢速度:)@micapam完成了您提到的所有更改。它只是在inspect元素中使用json进行响应。但是实际的
测试
文本没有显示原因?这是另一回事。。。部分是
\u name.html.erb
\u name.html.haml
,还有js&ruby文件
name.js.erb
这里介绍了配置思想的约定。基本上,您可以使用:format选项呈现“您想要的任何内容”,但由于您没有指定:format并使AJAX调用rails呈现机制以partial的名义期望js格式。@JakubKuchar您可以检查my
edit-1
。你能用代码简单地解释一下吗?我无法理解。正如@micapam所说的,现在我可以从
部分内容中获取静态文本。但是现在我需要在我的
部分视图中列出所有帖子,并呈现它。我该怎么做呢。你可以添加一个示例视图吗?我建议你看看Rails的布局和渲染指南:你这里的问题是关于缺少部分的。既然这是固定的,我建议你接受这个答案。如果你需要更多的关于再培训的帮助,试着在指南上尽可能的多做,然后,如果你被卡住了,问另一个(具体的)问题。
<%= render partial: 'shared/things', posts: @posts %>