Rails 5.0.1中的CRUD,动词和动作

时间:2017-02-08 15:31:32

标签: ruby-on-rails ruby-on-rails-5

使用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)

1 个答案:

答案 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,因此稍后设置友好网址等内容会变得很简单,这被认为是一种很好的做法。