2016-12-16 10 views
1

私のホームページのフォームとコントローラーの間にデータベースオブジェクトを作成する際に、読み込み時にタイトルにエラーが表示されるページ。NoMethodError in Pages#ホーム:未定義のメソッド 'color' for#<色:0x007fe71261c708>

home.html.erb

<%= form_for :colours do |f| %> 
    <span class="form-group"> 
     <%= f.text_field :colour, required: true, class: "balloon", id: "colour", placeholder: "Colour category (red, blue..)" %><label for="colour">Colour</label> 
    </span> 
    <span class="form-group"> 
     <%= f.number_field :bold, required: true, class: "balloon-num", id: "bold", min: 1, max: 12, placeholder: "1-12" %><label for="bold">Boldness</label> 
    </span> 
    <span class="form-group"> 
     <%= f.number_field :bright, required: true, class: "balloon-num", id: "bright", min: 1, max: 12, placeholder: "1-12" %><label for="bright">Brightness</label> 
    </span> 
    <span class="form-group"> 
     <%= f.number_field :num, required: true, class: "balloon-num", id: "num", min: 1, max: 5, placeholder: "1-5" %><label for="num"># Colours</label> 
    </span> 
    <span class="form-group"> 
    <button class="button" id="generate" type="submit"><i class="fi-arrow-right"></i></button> 
    </span> 
    <% end %> 

コントローラ/ colours_controller.rb

class ColoursController < ApplicationController 
    def home 
    @colours = Colours.new 
    end 
    def create 
    @colours = Colours.new(colours_params) 
    if @colours.save 
     redirect_to root_path 
    else 
     redirect_to root_path, notice: "Error." 
    end 
    end 
    private 
    def colours_params 
    params.require(:colours).permit(:colour, :bold, :bright, :num) 
    end 
end 

コントローラ/ pages_controller:それを引き起こしているのかわからない、ここに関連するファイル/コードは、 .rb

class PagesController < ApplicationController 
    def home 
     @colours = Colours.new 
    end 
    private 
    def colours_params 
     params.require(:colours).permit(:colour, :bold, :bright, :num) 
    end 
end 

のconfig/routes.rbを

Rails.application.routes.draw do 
    root to: 'pages#home' 
    resources :colour, only: [:home, :create] 
end 

デシベル/移行/ 20161215012944_create_colours.rb

class CreateColours < ActiveRecord::Migration[5.0] 
    def change 
    create_table :colours do |t| 
     t.string :colour 
     t.integer :bold 
     t.integer :bright 
     t.integer :num 
     t.timestamps 
    end 
    end 
end 

モデル/ colours.rb

class Colours < ActiveRecord::Base 

end 

私はしました蜂誰もが一日中何ができるか捜索して幸運なことを人々に尋ねると、うまくいけば、誰かがここで私の誤りを見て、私にその訂正方法を説明することができます。ありがとうございました!更新が変更さ


":色" 今、次のエラーを取得 "@colours" への私のform_forタグで、:

undefined method `colours_index_path' for #<#<Class:0x007fe711dbfab0>:0x007fe704401058> 
Did you mean? colours_path 

アップデート2コンソールで、「バンドルのexecレールルート戻り値:

Prefix Verb URI Pattern  Controller#Action 
     root GET/    pages#home 
colour_index POST /colour(.:format) colour#create 

アップデート3 Rを実行しますコンソールリターンでの不振の解決策ルート:

Prefix Verb URI Pattern    Controller#Action 
     root GET /      pages#home 
colour_index GET /colour(.:format)   colour#index 
      POST /colour(.:format)   colour#create 
    new_colour GET /colour/new(.:format)  colour#new 
edit_colour GET /colour/:id/edit(.:format) colour#edit 
     colour GET /colour/:id(.:format)  colour#show 
      PATCH /colour/:id(.:format)  colour#update 
      PUT /colour/:id(.:format)  colour#update 
      DELETE /colour/:id(.:format)  colour#destroy 
+0

複数の名前のモデルは使用しないでください。あなたのモデルは 'Colours'ではなく' Colour'と呼ばれるべきです。 – meagar

答えて

0

はあなたのフォームに問題がある:

<%= form_for :colours do |f| %> 

変更、それはそれはあなたがあなたの家のアクションで定義されたインスタンス変数を使用するように。

<%= form_for @colours do |f| %> 
+0

ありがとう!私は今、新しいエラーが発生しました。 "#<#のための未定義メソッド' colours_index_path ':0x007fe704401058> あなたはどういう意味ですか?colours_path " – Lacomus

+0

home.htmlファイルはあなたのカラービューまたはページビューにありますか? –

+0

ページビュー、これは1ページのサイトですが、まだ色を表示する必要はありますか? – Lacomus

関連する問題