代码之家  ›  专栏  ›  技术社区  ›  Obromios

局部变量在rails 5.1中不适用于控制器渲染

  •  4
  • Obromios  · 技术社区  · 6 年前

    我有一个控制器操作,它使用 print.html.erb 样板控制器代码为:

    def print
        @title = 'Print - Drill'
        render :show, layout: 'print', locals: { back_pth: drill_path(@drill) }
    end
    

    并且在 打印html。雇员再培训局 有一句话:

    <%= link_to 'Back', back_pth, class: 'print_link' %>
    

    但这会产生一个错误:

    ActionView::Template::Error:
           undefined local variable or method `back_pth' for #<#<Class:0x007fd6004e1230>:0x007fd5f7da57d0>
    

    打印模板由许多不同的控制器操作调用,因此如何解决此问题?该代码适用于rails 5.0.6。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Obromios    6 年前

    正如FarazPantakar所指出的,这是 issue 在rails 5.1 ActionController中。问题报告有一个变通方法,即在html中使用local\u赋值,因此链接变为

    <%= link_to 'Back', local_assigns[:back_pth], class: 'print_link' %>
    
        2
  •  0
  •   FarazPatankar    6 年前

    我不太确定这是否属于答案,但 this 可能是你所经历的?

    也许现在,您可以将代码移动到 show 即使在布局中不起作用,也可以这样做。