我的Rails应用程序从Rails 6升级到Rails 7后遇到了一个问题。当我尝试render_to_string
模板时,我收到ActionView::MissingTemplate异常。
由于这是工作正常,我不禁认为有一些新的方法来Rails 7,我无法找到。
我的代码如下:
控制器
class SomethingController < ApplicationController
...
def my_action
html_string = render_to_string(template: 'something/template.html.erb', locals: {id: params[:id]})
end
end
我的期望(以及我过去的行为)是返回经过处理的模板视图,但我收到的是异常:
ActionView::MissingTemplate (Missing template something/template.html.erb with {:locale=>[:"pt-BR", :pt], :formats=>[:pdf], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}.
Searched in:
* "/Users/user/rails/rn_igreja/app/views"
* "/Users/user/.asdf/installs/ruby/3.1.0/lib/ruby/gems/3.1.0/gems/devise-i18n-1.10.2/app/views"
* "/Users/user/.asdf/installs/ruby/3.1.0/lib/ruby/gems/3.1.0/gems/devise-4.8.1/app/views"
* "/Users/user/.asdf/installs/ruby/3.1.0/lib/ruby/gems/3.1.0/gems/actiontext-7.0.1/app/views"
* "/Users/user/.asdf/installs/ruby/3.1.0/lib/ruby/gems/3.1.0/gems/actionmailbox-7.0.1/app/views"
):
app/controllers/something_controller.rb:16:in `block in my_action'
app/controllers/something_controller.rb:12:in `my_action'
其他详细信息:
- Ruby版本:3.1.0
- Rails版本:7.0.2
我真的很感激任何线索我错过了这里。
2条答案
按热度按时间mfpqipee1#
@user973254帮助我解决了这个问题,感谢评论:
这个答案可能会有帮助:rails render_to_string giving errors with partial view
结果是,现在还需要用
render_to_string
方法传递formats:
参数。我对代码的补充,使其工作,是:
1.添加
formats:
参数1.删除
template:
参数的'html.erb'
部分1.添加
layout: false
(我还没有诚实地测试它是否是这个问题的关键下面我展示了可以工作的代码。
rwqw0loc2#
如果你使用的是一种“不常见”的格式(比如:kml或:kmz或:xls),记得将其添加到
config/initializers/mime_type.rb
中,否则render函数可能无法识别它。在Rails7升级后,我遇到了同样的问题,这就是解决方案