0

我最近修改了我的 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>

运行 rake 路由的输出:

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

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

谢谢,弗朗西斯

4

2 回答 2

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>
于 2013-03-18T23:54:10.693 回答
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 使用带有命名空间路由的 link_to

于 2013-03-18T23:56:07.733 回答