我有一个包含大量细节的索引页面,想要创建一个摘要索引页面;但它无法正确显示。我怀疑某种路由/范围问题。
我创建了一个名为years/index-summary.html.erb
的页面。在years/index.html.erb
页面中使用的相同代码会导致错误。 years
是locations
和people
之间的联接。
我将get 'summary' => 'years#index-summary'
添加到routes.rb.
适用于index
但不适用index-summary
<table class="table table-condensed table-striped">
<tr><td> <%= render 'newcon' %></td></tr>
<% @years.each do |year| %>
<tr>
<td class="active"></td>
<td class="active"> On <%= year.year_date.strftime('%d' ' ' '%b' ' ' '%Y') %>, <strong> <%= year.person.try(:full_name) %> </strong> was a </td>
<td class="active"> <strong><%= year.title %> </strong> at</td>
<td class="active"> <strong> <%= year.location.try(:address) %>, <%= year.location.try(:city) %> </strong> which was a </td>
<td class="active"> <strong> <%= year.resto ? 'restaurant' : '' %> <%= year.resto_name? ? " named \"#{year.resto_name}\". " : '' %> <%= year.resid ? 'Residence' : '' %> </strong> </td>
<% end %>
</tr>
</table>
错误是
Project/crores5/app/views/years/index-summary.html.erb where line #9 raised:
undefined method `each' for nil:NilClass
Extracted source (around line #9 [the last line in this code segment]):
<table class="table table-condensed table-striped">
<tr><td> <%= render 'newcon' %></td></tr>
<% @years.each do |year| %>
正如我所说,如果我将代码粘贴到index.html.erb并转到`/ years',它的工作正常。使用Puma在Mac上以开发模式运行。
感谢您的帮助。一个Rails新手。
https://bitbucket.org/MtnBiker/crores5
或者也许有更好的方法来解决这个问题。我在将数据输入数据库(通过Rails)时使用了详细的索引页面,但对于公众来说,简化页面应该是默认页面,并且会有一个指向详细(索引)页面的链接,该页面有两个其他长文本字段。 / p>
答案 0 :(得分:0)
@fanta。你让我思考。我发现行动是index-summary
。我重命名了新文件summary.html.erb
因为想避免与连字符混淆(连字符的方法名称不起作用,当我替换下划线时,它仍然无法工作,所以继续)。相应地更改了路由,在summary
控制器中创建了一个操作years
并从索引中复制,一切都很顺利。我确信有更干净的方法可以做到这一点,但我已经开始运行了。