Ruby on rails Can';尝试在RubyonRails中创建新项时,无法使表单正常工作

Ruby on rails Can';尝试在RubyonRails中创建新项时,无法使表单正常工作,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我刚刚开始自学RubyonRails,我的主要学习来源是在线网站,如here和codecademy,它只在解释我编写代码时发生的事情方面做得很好 我的项目是一个非常简单的IT库存站点,它显示一个包含项目信息的数据库。这是为了练习CRUD,现在我被困在创建部分。每当我单击主页上的链接时,它都会转到一个带有表单的页面,他们可以输入表单然后提交,但它甚至不会显示带有表单的页面。这是我目前的代码 Routes.rb Rails.application.routes.draw do get '/items

我刚刚开始自学RubyonRails,我的主要学习来源是在线网站,如here和codecademy,它只在解释我编写代码时发生的事情方面做得很好

我的项目是一个非常简单的IT库存站点,它显示一个包含项目信息的数据库。这是为了练习CRUD,现在我被困在创建部分。每当我单击主页上的链接时,它都会转到一个带有表单的页面,他们可以输入表单然后提交,但它甚至不会显示带有表单的页面。这是我目前的代码

Routes.rb

Rails.application.routes.draw do
get '/items' => 'items#index' 
get 'items/new' => 'items#new'
post 'items' => 'items#create'
root 'items#index'  #homepage and /items are same page for now
<%= form_for(@item) do |f| %>  
<div> 
  <%= f.label :inventoryitem %><br>
  <%= f.text_area :idnumber %><br> 
  <%= f.text_area :vutag %><br>
  <%= f.text_area :fund %><br>
  <%= f.text_area :dept %><br>
  <%= f.text_area :bldg %><br>
  <%= f.text_area :person %><br>
  <%= f.text_area :mfct %><br>
  <%= f.text_area :mfctdate %><br>
  <%= f.text_area :commonname %><br>
  <%= f.text_area :modelnum %><br>
  <%= f.text_area :serial %><br>
  <%= f.text_area :cost %><br>
</div> 
<div> 
  <%= f.submit "Create" %> 
</div> 
<% end %>
项目控制器

class ItemsController < ApplicationController
def index
    @items = InventoryItem.all
end

def new
    @item = InventoryItem.new
end

def create
    @item = InventoryItem.new(item_params)
    if @item.save
        redirect_to '/items'
    else
        render 'new'
    end
end

private
def item_params
    params.require(:item).permit( :idnumber, :vutag, :fund, :dept, :bldg, :person, :mfct, :mfctdate, :commonname, :modelnum, :serial, :cost)
end
end
class ItemsController
new.html.erb

Rails.application.routes.draw do
get '/items' => 'items#index' 
get 'items/new' => 'items#new'
post 'items' => 'items#create'
root 'items#index'  #homepage and /items are same page for now
<%= form_for(@item) do |f| %>  
<div> 
  <%= f.label :inventoryitem %><br>
  <%= f.text_area :idnumber %><br> 
  <%= f.text_area :vutag %><br>
  <%= f.text_area :fund %><br>
  <%= f.text_area :dept %><br>
  <%= f.text_area :bldg %><br>
  <%= f.text_area :person %><br>
  <%= f.text_area :mfct %><br>
  <%= f.text_area :mfctdate %><br>
  <%= f.text_area :commonname %><br>
  <%= f.text_area :modelnum %><br>
  <%= f.text_area :serial %><br>
  <%= f.text_area :cost %><br>
</div> 
<div> 
  <%= f.submit "Create" %> 
</div> 
<% end %>














index.html

<table>
<tr>
  <th>IDNum</th>
  <th>VU Tag</th>
  <th>Fund</th>
  <th>Dept</th>
  <th>Bldg</th>
  <th>Person</th>
  <th>Mfct</th>
  <th>Mfct Date</th>
  <th>Common Name</th>
  <th>Model</th>
  <th>Serial</th>
  <th>Cost</th>
</tr>
<tr>
  <% @items.each do |item| %>
  <td> <%= item.idnumber %> </td>
  <td> <%= item.vutag %> </td>
  <td> <%= item.fund %> </td>
  <td> <%= item.dept %> </td>
  <td> <%= item.bldg %> </td>
  <td> <%= item.person %> </td>
  <td> <%= item.mfct %> </td>
  <td> <%= item.mfctdate %> </td>
  <td> <%= item.commonname %> </td>
  <td> <%= item.modelnum %> </td>
  <td> <%= item.serial %> </td>
  <td> <%= item.cost %> </td>
  <% end %>
</tr>
</table>
<br><br>
<%= link_to "New Entry", "items/new" %>

IDNum
VU标签
基金
部
建筑物
人
多功能CT
Mfct日期
通用名
模型
电视连续剧
成本


一个非常基本的应用程序,用于显示数据库中的信息。(我会回去把它弄漂亮的

显示表格的页面工作正常,当我单击链接并转到items/new时,该页面显示以下错误:

NoMethodError in Items#new 
Showing /home/group3/ITSite/app/views/items/new.html.erb where line #1 raised: 
undefined method `inventory_items_path' for #<#<Class:0x007f8b11137718>:0x007f8b10012fc8>


Extracted source (around line #1): 
    <%= form_for(@item) do |f| %>  
    <div> 
    <%= f.label :inventoryitem %><br>
    <%= f.text_area :idnumber %><br> 
    <%= f.text_area :vutag %><br>
    <%= f.text_area :fund %><br>

Rails.root: /home/group3/ITSite

Application Trace | Framework Trace | Full Trace 
app/views/items/new.html.erb:1:in `_app_views_items_new_html_erb__1490812464141641456_70117522166260'
NoMethodError在项目中#新
显示/home/group3/ITSite/app/views/items/new.html.erb,其中第1行出现:
未定义的方法“库存项目路径”#
提取的源(第1行附近):




Rails.root:/home/group3/ITSite 应用程序跟踪|框架跟踪|完整跟踪 app/views/items/new.html.erb:1:在“app\u views\u items\u new\u html\u erb\u 1490812464141641456\u 70117522166260”中

有人能帮我找出错误是什么以及我需要在哪里修复它吗?我不相信是html页面本身造成的,而是导致错误的原因,或者是命名错误的原因。Ruby on Rails中的命名约定让我有点不舒服。

使用
资源
在路由中,它会创建命名路由以及路由

Rails.application.routes.draw do
  resources :items, only:[:index, :new, :create]
  root 'items#index'
end

此外,您还应将模型命名为与控制器和路由相同的名称,因为默认情况下,Rails使用约定优于配置。这意味着名称很重要。您的模型是InventoryItem。因此,您的控制器应称为InventoryItemsController

正如Vasfed提到的,在路由中,约定是使用resources方法生成必要的路径。因此,与其使用
get'/items/new'
等,不如使用
resources:inventory\u items

假设您进行了这些更改。在您的InventoryItemsController
new
操作中,设置
@inventory\u item=InventoryItem.new
。当然,您可以随意调用变量,但按实际情况调用它是有意义的。这就是为什么我建议
@inventory\u item
。到目前为止效果如何


在表单中,执行以下操作:
form_for(@inventory_item)do | f |
。Rails将自动将其转换为该模型实例的“新”路径:
new_inventory_item_path
(也称为inventory_items/new).

您能将
rake routes
的输出添加到问题中吗?请遵循Tom提到的命名约定。这更有可能奏效。