未定义的方法`new'适用产品:模块

时间:2017-12-22 07:21:07

标签: ruby-on-rails

<h2>New Product</h2>

<%= form_for @product do|f| %>
    <%= f.label :product_title %><br>
    <%= f.text_field :product_title %><br>
    <br>
    <%= f.label :key_features %><br>
    <%= f.text_area key_features %><br>
    <br>
    <%= f.label :price %>
    <%= f.number_field :price %><br>
    <br>
    <%= f.label :colour %>
    <%= f.number_field :colour %><br>
    <br>
    <%= f.label :main_material %>
    <%= f.number_field :main_material %><br>
    <br>
    <%= f.submit %>
<% end %>


class ProductsController < ApplicationController
    def home
    @product = Product.all
    end
    def new
    @product = Product.new
    end
end

class CreateProducts < ActiveRecord::Migration
    def change
        create_table :products do |t|
            t.string :product_title
            t.text   :key_features
            t.integer :price
            t.string :colour
            t.string :main_material

            t.timestamps null: false
        end
    end
end

为什么我要面对这个错误?

3 个答案:

答案 0 :(得分:2)

我认为您收到此错误是因为您的应用名称也是Product。默认情况下,您的应用名称将是保留关键字,您不能将其用于命名。如果是这种情况,您应该将应用重命名为product_app,以将型号名称用作Product。要重命名该应用,您可以参考Renaming a Rails 4 appHow to rename a rails 5 application?。希望这有帮助。

答案 1 :(得分:0)

您需要强制要求模型product.rb,因为不会在控制器上自动加载此文件,如

require 'product.rb'

关于@shingara回答的非常好的解释

答案 2 :(得分:0)

我认为你没有模特课:

file app / model / product.rb

class Product < ApplicationModel
end