我使用wkhtmltopdf将页面转换为pdf
<%= link_to "download" user_group_assessments_path(@user, @group, @assessment, format: 'pdf') =>
它将转到我的AssessmentsController并调用我的索引方法,它看起来像:
@assessments = Assessment.all
respond_to do |format|
format.html
format.pdf do
render pdf: "filename"
template: "assessments/show.pdf.erb"
end
end
end
在show.pdf.erb中,我访问用户,组和评估。
每件事都没问题,它没有任何问题。但是当我打电话时
<% @assessment.measurements.each do |m| %>
...
<% end %>
我收到以下错误:
未定义的方法&#39;测量&#39;为零:NilClass
它指向我尝试访问测量的行。
如何访问模型&#39;测量&#39;从这个文件?
答案 0 :(得分:0)
您需要将评估详细信息发送到您的视图。例如:
respond_to do |format|
format.html
format.pdf do
render pdf: "filename"
template: "assessments/show.pdf.erb"
locals: {:assessment => @assesment}
end
end
然后在您的视图中,评估可以作为
进行访问<% assessment.measurements.each do |m| %>
...
<% end %>
答案 1 :(得分:0)
在控制器中,您的变量为@assessments
但是对于迭代,您尝试使用缺少复数@assessment
的{{1}}。请尝试以下
s
或者,您必须在控制器操作中使用<% @assessments.each do |assessment| %>
<% assessment.measurements.each do |m| %>
...
<% end %>
<% end %>
实例变量。然后你可以使用以下循环
@assessment
答案 2 :(得分:0)
如果您与测量值有关联,请尝试此操作
@assessments = Assessments.joins(:measurements)
并在您的视图中执行此操作
@assessments.each do |assessment|
assessment.measurements.each do |measurement|
perform operations
end
end
答案 3 :(得分:0)
正如我上面提到的,我在索引操作中编写了以下代码:
respond_to do |format|
format.html
format.pdf do
render pdf: "filename"
template: "assessments/show.pdf.erb"
end
end
但这是错误的,因为我试图访问@assessment,其中@assessment在show action中定义,而不是在index action中。在索引中,所有评估都是定义的,而不是特定的评估。我只需要一个具有特定身份的人。
此外,将代码放在show方法而不是索引中解决了问题。