在使用rails 5.0.1时,我有一个带有Subject Model的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中,索引资源被移除,并以某种方式被显示所取代,我还确认了它的here。请有一个解决这个问题的方法,我需要如何显示一个资源列表(resource#index),也显示列表上的特定项目(resource#show)
发布于 2017-02-08 23:41:23
您在路由中使用了错误的方法。
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,所以以后设置友好urls之类的东西变得很简单,这被认为是一种很好的做法。
https://stackoverflow.com/questions/42117223
复制相似问题