Ruby on rails I';m getting ActionController::RoutingError:没有与[GET]匹配的路由/项目“;尽管路线看起来是正确的
我是编程新手,已经学习RubyonRails大约11周了 在简单的“待办事项”列表应用程序上运行功能规范(使用RSpec和Capybara)时。我得到这个错误:Ruby on rails I';m getting ActionController::RoutingError:没有与[GET]匹配的路由/项目“;尽管路线看起来是正确的,ruby-on-rails,rspec,capybara,Ruby On Rails,Rspec,Capybara,我是编程新手,已经学习RubyonRails大约11周了 在简单的“待办事项”列表应用程序上运行功能规范(使用RSpec和Capybara)时。我得到这个错误: Failures: 1) User creates ITEM Successfully Failure/Error: click_button 'Save' ActionController::RoutingError: No route matches [GET] "/items" 这是我的路
Failures:
1) User creates ITEM Successfully
Failure/Error: click_button 'Save'
ActionController::RoutingError:
No route matches [GET] "/items"
这是我的路由文件:
devise_for :users
resources :items, only: [:new, :create, :show]
get 'about' => 'welcome#about'
root to: "welcome#index"
end
…以下是“项目”控制器:
class ItemsController < ApplicationController
def new
end
def show
end
def create
@item = Item.new(item_params)
@item.save
redirect_to @item
end
private
def item_params
params.require(:item).permit(:body)
end
end
和项目工厂:
FactoryGirl.define do
factory :item do
body 'itembody'
list
end
end
…以下是表格:
<h1>Items#new</h1>
<%= form_for Item.new do |form| %>
<%= form.text_field :body, placeholder: 'Body' %>
<%= form.submit 'Save' %>
<% end %>
也许可以试试:
resources :items, only: [:new, :create, :show, :index]
如果在命令行中运行rake routes
,它将显示应用程序可用的路由(并帮助解释上述内容)
此外,如果您尚未阅读:
您能提供您提交的表单吗?好的-刚刚添加了表单。在运行rake路由之后,我得到:root-get/您是否已经将索引操作添加到items-resources路由(如上所述)?是的。我运行了rake路由并发布了它们。不,我的意思是你是否修改了
routes.rb
以合并上面列出的线路?来自您发布的错误--“[GET]”/items”的请求表示Rails正在查找项的索引方法,但现有资源路由仅包括:new、:create和:show方法。尝试添加:index(如果您还没有——我无法从您的回答中判断)。这样做了,但我不确定为什么。因为我没有在items控制器中定义索引方法。我像你说的那样添加了:对路由进行索引,然后当然必须向控制器添加索引方法,然后我必须创建视图。之后,规范通过了。
<h1>Items#new</h1>
<%= form_for Item.new do |form| %>
<%= form.text_field :body, placeholder: 'Body' %>
<%= form.submit 'Save' %>
<% end %>
items POST /items(.:format) items#create
new_item GET /items/new(.:format) items#new
item GET /items/:id(.:format) items#show
about GET /about(.:format) welcome#about
resources :items, only: [:new, :create, :show, :index]