使用rails 5.0.1时,我有一个带有主题模型的Subjects控制器,但在尝试使用时
<% @subjects.each do |subject| %>
<tr>
<td><%= subject.position %></td>
<td><%= subject.name %></td>
<td class="center"><%= subject.visible ? 'Yes' : 'No' %></td>
<td class="center"><%= subject.pages.size %></td>
<td class="actions">
<%= link_to("Show", subject_path(subject.id), :class => 'action show') %>
<%= link_to("Edit", '#', :class => 'action edit') %>
<%= link_to("Delete", '#', :class => 'action delete') %>
</td>
</tr>
<% end %>
我在这一行找到了一个找不到错误的方法。
subject_path(subject.id)
在进一步的研究中,我注意到在rails 5.0.1中,索引资源被移除并以某种方式被show替换,我也确认了它here。请问有没有办法,我需要如何显示资源列表(资源#index),并在列表中显示特定项目(资源#show)
答案 0 :(得分:1)
您在路线中使用了错误的方法。
resource
适用于singular resources。意味着只有一个资源的情况。
你想要的是resources
。
resources :subjects
# this would generate routes for an app wide configuration
resource :configuration
路由到对象时,您只需传递记录:
# bad
subject_path(subject.id)
# good
subject_path(subject)
# better
link_to("Show", subject, class: 'action show')
由于这会在模型上调用#to_param
,因此稍后设置友好网址等内容会变得很简单,这被认为是一种很好的做法。