【发布时间】:2015-12-09 02:42:45
【问题描述】:
我刚开始自学 Ruby on Rails,我的主要学习来源是在线网站,例如 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
项目控制器
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
new.html.erb
<%= 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" %>
一个非常基本的应用程序,用于显示来自数据库的信息。 (一旦它起作用,我会回去让它变得漂亮。
显示表格的页面工作正常,当我单击链接并转到 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'
谁能帮我弄清楚错误是什么以及我需要在哪里修复它?我不相信它的 html 页面本身,而是导致它的东西,或者命名错误的东西。 Ruby on Rails 中的命名约定让我有点不知所措。
【问题讨论】:
-
能否将
rake routes的输出添加到问题中? -
遵循 Tom 提到的命名约定。它更有可能发挥作用。
标签: ruby-on-rails ruby ruby-on-rails-4