【问题标题】:Rails >= 3.0.8 render inline code with layout not workingRails >= 3.0.8 呈现布局不起作用的内联代码
【发布时间】:2011-07-12 23:14:30
【问题描述】:

似乎渲染方法已更改。 在视图中,我曾经能够做到以下几点:

= render :layout => 'some_layout' do
  some stuff to be rendered

似乎最好的解决方法是将内容移动到部分并调用布局

= render :partial => 'some stuff to be rendered', :layout => 'some_layout'

我只是想知道是否有人遇到过这个问题,以及这是一个错误还是有意的更改?


编辑

使用布局渲染块内联有效。在http://api.rubyonrails.org/classes/ActionView/Partials.html 处查看有关将布局应用于任何模板中的块的部分

我遇到的问题是最新版本的 HAML 无法正确渲染嵌套渲染调用。 https://github.com/nex3/haml/issues/412

【问题讨论】:

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


    【解决方案1】:

    从您的帖子看来,您正试图在视图中执行此操作。

    您是否可能混淆了ActionController 的渲染和ActionView 的渲染?查看@ 2.3.8 和 3.x 的 API 文档,ActionView 的渲染中似乎没有 :layout 选项。


    更新

    实际上,我可能已经偏离了基地。似乎确实有一个:inline 选项,如here 所述。

    render(options = {}, locals = {}, &block)

    返回一个结果 由选项哈希决定的渲染。主要选项是:

    • :partial - 请参阅 ActionView::Partials。
    • :update - 使用给定的块调用 update_page。
    • :file - 呈现一个显式模板文件(这曾经是旧的默认值),添加 :locals 以传递这些文件。
    • :inline - 呈现一个内联模板,类似于它在控制器中的完成方式。
    • :text - 呈现传入的文本。

    【讨论】:

    • 我很困惑 - 你的第一个答案是关于 ActionView#render 中没有 :layout,而你的后续是关于 :inline。虽然存在嵌套模板的情况,但这是通过 :layout 作为顶级模板而 :partials 在其他地方使用来实现的。
    • 对造成的混乱表示歉意。我假设:inline 选项使用视图中看似不存在的:layout 选项完成了OP 尝试执行的操作。
    【解决方案2】:

    这已在 HAML v3.1.3 的最新版本中得到修复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 2016-04-23
      相关资源
      最近更新 更多