命名空间修改后形式中断

时间:2013-03-18 23:16:30

标签: ruby-on-rails forms namespaces

我最近modified我的Sessions.rb控制器因为它在我的应用程序中与Devise Sessions控制器争夺至高无上的地位。它似乎运作良好。我修改了我的route.rb,如答案所述。

现在我在默认情况下遇到了一些问题(自脚手架以来没有太多变化)会话表格。

config/routes.rb
  namespace :classroom do
    resources :registrations
    resources :sessions
end

classroom/sessions/index.html.erb
  <h1>Listing sessions</h1>

  <table>
    <tr>
      <th>Class size</th>
      <th>Course</th>
      <th>Description</th>
      <th>Location</th>
      <th>Name</th>
      <th>Price</th>
      <th></th>
      <th></th>
      <th></th>
    </tr>

  <% @sessions.each do |session| %>
    <tr>
       <td><%= session.class_size %></td>
        <td><%= session.course_id %></td>
        <td><%= session.description %></td>
        <td><%= session.location_id %></td>
        <td><%= session.name %></td>
        <td><%= session.price %></td>
        <td><%= link_to 'Show', session %></td>
        <td><%= link_to 'Edit', edit_classroom_session_path(session) %></td>
        <td><%= link_to 'Destroy', session, method: :delete, data: { confirm: 'Are you sure?' } %></td>
    </tr>
  <% end %>
  </table>
  <br />
  <%= link_to 'New Session', new_classroom_session_path %>  

以下链接已停止工作,并在加载/sessions/index.html.erb

时出现“无法找到有效的映射”错误消息
<td><%= link_to 'Show', session %></td>
td><%= link_to 'Edit', edit_classroom_session_path(session) %></td>
<td><%= link_to 'Destroy', session, method: :delete, data: { confirm: 'Are you sure?' } %></td>

正在运行的佣金路线的输出:

classroom_sessions GET    /classroom/sessions(.:format)                     classroom/sessions#index
                        POST   /classroom/sessions(.:format)               classroom/sessions#create
  new_classroom_session GET    /classroom/sessions/new(.:format)           classroom/sessions#new
 edit_classroom_session GET    /classroom/sessions/:id/edit(.:format)      classroom/sessions#edit
      classroom_session GET    /classroom/sessions/:id(.:format)           classroom/sessions#show
                        PUT    /classroom/sessions/:id(.:format)           classroom/sessions#update
                        DELETE /classroom/sessions/:id(.:format)           classroom/sessions#destroy

我不太确定如何修改链接的“显示”和“销毁”部分,以使它们与新命名空间一起使用。在此先感谢您的帮助。非常感谢。

谢谢, 弗朗西斯

2 个答案:

答案 0 :(得分:1)

路线名称显示在路线表的第一列。你应该在链接助手上关注它。

他们应该是:

<td><%= link_to 'Show', classroom_session_path(session) %></td>
<td><%= link_to 'Edit', edit_classroom_session_path(session) %></td>
<td><%= link_to 'Destroy', classroom_session_path(session), method: :delete, data: { confirm: 'Are you sure?' } %></td>

答案 1 :(得分:1)

尝试:

<td><%= link_to 'Show', classroom_session_path(session) %></td>
<td><%= link_to 'Edit', edit_classroom_session_path(session) %></td>
<td><%= link_to 'Destroy', classroom_session_path(session), method: :delete, data: { confirm: 'Are you sure?' } %></td>

在这里看一下如何处理带有命名空间路由的链接的好答案:

rails using link_to with namespaced routes