当操作显然在控制器中时,无路由的路由错误匹配

时间:2013-09-08 20:05:39

标签: ruby-on-rails routing actioncontroller

我认为控制器配置不正确是一个路由问题。我感到很困惑,因为new中有ComicTitlesController行动。以下是我在加载主页时收到的错误,该主页在导航栏中有new_user_comic_title_path

Routing Error

No route matches {:action=>"new", :controller=>"comic_titles"}
Try running rake routes for more information on available routes.

在我看来:

<li><%= link_to 'Publish' , new_user_comic_title_path %></li>

ComicTitles控制器:

  def new
    @user = current_user
    @comic_title = @user.comic_titles.new
  end

请注意,ComicTitle嵌套在User下。这是路径文件:

  resources :users, shallow: true do
    resources :comic_titles
  end

当我运行rake routes时:

 user_comic_titles GET    /users/:user_id/comic_titles(.:format)             comic_titles#index
                     POST   /users/:user_id/comic_titles(.:format)             comic_titles#create
new_user_comic_title GET    /users/:user_id/comic_titles/new(.:format)         comic_titles#new
    edit_comic_title GET    /comic_titles/:id/edit(.:format)                   comic_titles#edit
         comic_title GET    /comic_titles/:id(.:format)                        comic_titles#show
                     PUT    /comic_titles/:id(.:format)                        comic_titles#update
                     DELETE /comic_titles/:id(.:format)                        comic_titles#destroy

2 个答案:

答案 0 :(得分:1)

如您所见,路线需要参数:user_id,而您的link_to缺少该参数。

尝试将link_to定义更新为以下内容:

<li><%= link_to 'Publish' , new_user_comic_title_path(@user) %></li>

答案 1 :(得分:0)

由于您有一个嵌套路由,我相信该路由需要一个user_id参数。

在link_to帮助器中尝试添加以下内容:

<li><%= link_to 'Publish' , new_user_comic_title_path(user_id: current_user.id) %></li>