Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么我的控制器重定向到显示?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 为什么我的控制器重定向到显示?

Ruby on rails 为什么我的控制器重定向到显示?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,在我的rake路线中,我得到: project_todos GET /project_todos(.:format) project_todos#index POST /project_todos(.:format) project_todos#create new_project_todo GET /project_todos/n

在我的rake路线中,我得到:

project_todos GET    /project_todos(.:format)                   project_todos#index
                            POST   /project_todos(.:format)                   project_todos#create
           new_project_todo GET    /project_todos/new(.:format)               project_todos#new
          edit_project_todo GET    /project_todos/:id/edit(.:format)          project_todos#edit
               project_todo GET    /project_todos/:id(.:format)               project_todos#show
                            PUT    /project_todos/:id(.:format)               project_todos#update
                            DELETE /project_todos/:id(.:format)               project_todos#destroy
project_todos_toggle_status POST   /project_todos/toggle_status(.:format)     project_todos#toggle_status
发件人:

在我的视图中,有一行看起来像:

<%= link_to 'Toggle Project', project_todos_toggle_status_path(id: todo.id), method: "post" %>
routes.rb

resources :project_todos do
    member do
      post :toggle_status
    end
  end
查看代码:

 <% @todos.each do |todo| %>
    <li class="todo_item todo"><%= todo.title %></li>
    <%= todo.id%>
    <%= link_to 'Toggle Project', toggle_status_project_todo_path(todo), method: "post" %>
<% end %>
更新#2

此类错误是否会导致此问题:


尝试将您的
项目待办事项
行移动到路由中
资源:项目待办事项
行上方。rb


然后,将在id版本之前找到自定义路由。

尝试将您的
项目待办事项
行移动到路由中
资源:项目待办事项
行上方。rb


然后将在id版本之前找到自定义路由。

我相信您正在尝试为单个资源项目“切换\u状态”,对吗?在Rails 3中描述此路线的更常见方法如下:

resources :project_todos do
  member do
    post :toggle_status
  end
end
这将在路由文件中生成确定的顺序:

toggle_status_project_todo POST   /project_todos/:id/toggle_status(.:format) project_todos#toggle_status
             project_todos GET    /project_todos(.:format)                   project_todos#index
                           POST   /project_todos(.:format)                   project_todos#create
          new_project_todo GET    /project_todos/new(.:format)               project_todos#new
         edit_project_todo GET    /project_todos/:id/edit(.:format)          project_todos#edit
              project_todo GET    /project_todos/:id(.:format)               project_todos#show
                           PUT    /project_todos/:id(.:format)               project_todos#update
                           DELETE /project_todos/:id(.:format)               project_todos#destroy
允许您在视图中编写:

<%= link_to 'Toggle Project', toggle_status_project_todo_path(@todo), method: "post" %>


哪个会发到“http://localhost:3000/project_todos/1/toggle_status“

我相信您正在尝试为单个资源项目ToDo“切换\u状态”,对吗?在Rails 3中描述此路线的更常见方法如下:

resources :project_todos do
  member do
    post :toggle_status
  end
end
这将在路由文件中生成确定的顺序:

toggle_status_project_todo POST   /project_todos/:id/toggle_status(.:format) project_todos#toggle_status
             project_todos GET    /project_todos(.:format)                   project_todos#index
                           POST   /project_todos(.:format)                   project_todos#create
          new_project_todo GET    /project_todos/new(.:format)               project_todos#new
         edit_project_todo GET    /project_todos/:id/edit(.:format)          project_todos#edit
              project_todo GET    /project_todos/:id(.:format)               project_todos#show
                           PUT    /project_todos/:id(.:format)               project_todos#update
                           DELETE /project_todos/:id(.:format)               project_todos#destroy
允许您在视图中编写:

<%= link_to 'Toggle Project', toggle_status_project_todo_path(@todo), method: "post" %>


哪个会发到“http://localhost:3000/project_todos/1/toggle_status“

我认为它确实需要移动,但没有发生任何变化,我重新启动了rails,以便它能够获取新的路由。您可以尝试将其作为收集路由添加到项目\u todos资源中-请看,我认为它确实需要移动,但是什么都没有改变,我重新启动了rails,这样它就可以获取新的路由。您可以尝试将其作为收集路由添加到project_todos资源中-查看url看起来是否正确,但我得到以下错误:
没有与[get]匹配的路由“/project_todos/1/toggle_status”
它为什么要尝试执行get?请检查指向的链接,并且路由文件与我的匹配。单击链接时,日志/development.log文件的输出是什么?我正在Rails 3.2.7上进行测试。另外,请检查您的js资产,如果您使用的是jquery,我相信您应该包括jquery_ujs,以使方法post功能正常工作。我已经更新了上面的内容,并进行了复制粘贴,因此这正是我所拥有的。我所做的唯一更改是从@todo改为todo,原因很明显。我在一个单独的应用程序中重新创建了它,它可以工作,那么还有什么可能呢?查看从html生成的URL:
,那么如何在单击链接和获取错误之间找出问题所在?该URL看起来是正确的,但是我得到了以下错误:
没有与[get]匹配的路由“/project\u todos/1/toggle\u status”
它为什么要尝试执行get?检查指向的链接,路由文件与我的匹配。单击链接时,日志/development.log文件的输出是什么?我正在Rails 3.2.7上进行测试。另外,请检查您的js资产,如果您使用的是jquery,我相信您应该包括jquery_ujs,以使方法post功能正常工作。我已经更新了上面的内容,并进行了复制粘贴,因此这正是我所拥有的。我所做的唯一更改是从@todo改为todo,原因很明显。我在一个单独的应用程序中重新创建了它,它可以工作,那么还有什么可能呢?查看从html生成的URL:
,那么如何在单击链接和获取错误之间找出问题所在?