【问题标题】:Forms broken after namespace modification命名空间修改后表单损坏
【发布时间】:2013-03-18 23:16:29
【问题描述】:

我最近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>

运行 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

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

谢谢, 弗朗西斯

【问题讨论】:

    标签: ruby-on-rails forms namespaces


    【解决方案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

    【讨论】:

    • 您提供的链接实际上解决了我为另一个问题计划的另外两个问题。谢谢!
    【解决方案2】:

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

    他们应该是:

    <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>
    

    【讨论】:

    • 嗯...我仍然在“Show”和“Destroy”link_to 上得到 #:0x007faba9bba588> 的未定义方法 `classroom_session'。
    • 确实,两个链接上都缺少path
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多