【问题标题】:rails render_to_string giving errors with partial viewrails render_to_string 给出部分视图错误
【发布时间】:2011-10-28 01:14:07
【问题描述】:

在代码下方使用带有部分视图的 render_to_string 方法时出现ActionView::MissingTemplate 错误

 bizz = render_to_string(:partial => "biz_new",:layout => false)

即使我已明确指定 :layout => false,我总是会收到 MissingTemplate 错误。

但是带有普通视图的 render_to_string 在同一个项目中可以正常工作。可能是什么原因?

在堆栈跟踪下方

ActionView::MissingTemplate(缺少部分业务/biz_new 与 {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:text, "/"], :locale=>[:en, :en]} 在视图路径中 "/home/ramesh/works/xxx/app/views", “/home/ramesh/works/xxx/vendor/plugins/asset_packager/app/views”):

【问题讨论】:

  • @fl00r,在业务目录下,我离开了业务,因为上面的代码在业务控制器中运行。

标签: ruby-on-rails ruby views partial-views


【解决方案1】:

试试

 render_to_string("_biz_new", :formats => [:html], :layout => false, :locals => {:biz => @biz})

render_to_string 需要起始下划线和 .html 扩展名。

【讨论】:

  • 有什么方法可以获取主机或设置主机吗?
【解决方案2】:

正如 Mike Kijewski 所提到的,您可以在部分名称的开头包含下划线,但如果您最后使用 .html,则会收到弃用警告。更直接的方法是:

render_to_string(:partial => "folder_name/_partial_name", :formats => [:html], :layout => false, :locals => {:a_needed_argument_for_the_partial => @arg})

【讨论】:

    【解决方案3】:

    看起来 rails 期望文件为 txt 格式。文件名是什么?尝试命名它:

    _biz_new.txt.erb 
    

    -或-

    businesses/_biz_new.txt.erb
    

    【讨论】:

    • 名为 _biz_new.html.erb 的文件。使用txt.erb的原因是什么?
    • 看起来 rails 正在寻找 txt 格式的文件。只是预感,试一试。
    • 我有最后一个想法。尝试将部分重命名为 _biz.erb 并调用以呈现该部分。否则我很难过。
    【解决方案4】:

    有类似的问题。

    我找到了解决办法:

    render_to_string(model, :formats => [:html])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-07
      • 2023-03-05
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2014-12-08
      • 2012-06-04
      相关资源
      最近更新 更多