【问题标题】:missing partials with rails缺少带导轨的零件
【发布时间】:2013-10-02 04:30:28
【问题描述】:
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"

Edit-1

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

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

Edit-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 %>

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

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

test

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

【问题讨论】:

  • 您是否尝试向该操作发出 JSON 请求?查看错误消息中的 :formats 选项。
  • 是的,这是一个带有 json 数据类型的 ajax 请求
  • 也许这会对你有所帮助:stackoverflow.com/questions/2566759/…
  • 您的视图命名错误。您需要 some_action.json.erb 而不是 _some_action.json.erb(没有初始下划线 - 只有部分名称,而不是视图模板,以下划线开头)。此外,调用变量来存储 @posts 'post' 也没有任何意义 - 保持复数形式。 _information..js.erb 中的两个点也应该只是一个。可能是错别字?也许你在打字时需要放慢速度:)
  • @micapam 做了你提到的所有改变。它只是在检查元素中使用 json 响应。但是实际的test 文字没有显示

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


【解决方案1】:

好吧,恕我直言,你需要命名你的部分喜欢

_things.js.erb

还是没有?

【讨论】:

  • 为什么?这是另一回事...部分是_name.html.erb_name.html.haml 并且有js & ruby​​ 文件name.js.erb
  • 这里介绍了配置思想的约定。基本上,您可以使用 :format 选项呈现“任何你想要的”,但由于您没有指定 :format 并制作 AJAX 调用 rails 渲染机制,期望以部分名称的 js 格式。
  • @JakubKuchar 请检查我的edit-1。你能用代码简要解释一下吗?我无法得到你。
【解决方案2】:

正如 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 %>

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

【讨论】:

  • 正如@micapam 所说的那样
  • 好的,现在我从things partial 获取静态文本。但现在我需要列出我的things partial view and render it 中的所有帖子。我该怎么做。你能添加一个示例事物视图吗?
  • 我建议您查看 Rails 布局和渲染指南:guides.rubyonrails.org/layouts_and_rendering.html 您的问题是关于缺少部分的。既然这是固定的,我建议你接受答案。如果您在 ERB 方面需要更多帮助,请尽量使用指南,然后,如果您遇到困难,请在 SO 上提出另一个(具体)问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多