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>

名前空間付きルートを使用してリンクを処理する方法については、こちらのすばらしい回答をご覧ください。

名前空間付きルートでlink_toを使用するレール

于 2013-03-18T23:56:07.733 に答える