在将Rails应用程序从Rails 6升级到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'其他详情:
我真的很想知道我在这里错过了什么。
发布于 2022-06-15 17:30:35
@user973254帮我解决了这个问题,谢谢你的评论:
这个答案可能会有帮助:rails render_to_string giving errors with partial view
现在还需要使用formats:方法传递render_to_string参数。
我对代码的补充,让它起作用的是:
parameter
formats:
template: layout: false的'html.erb'部分(我还没有对其进行诚实的测试,以检查这一问题是否对起关键作用)
下面我展示了工作的代码。
class SomethingController < ApplicationController
...
def my_action
html_string = render_to_string(
template: 'something/template',
formats: [:html],
locals: { id: params[:id] },
layout: false
)
end
endhttps://stackoverflow.com/questions/72479400
复制相似问题