2015-07-16 3 views
0

Я чрезвычайно новичок и просматриваю основные рубиновые рельсы tutorial, за исключением того, что он настраивает его только для добавления дополнительных полей и переименования, что он называет статьями в контактах.Nil в базе данных для Ruby on Rails

Проблема в том, что все в порядке, за исключением того, что все мои данные добавляются как NIL. Вот мой контроллер:

class ContactsController < ApplicationController 
    def index 
@contacts = Contact.all 
    end 
def show 
    @contacts = Contact.find(params[:id]) 
end 

def new 
end 

def create 
@contacts = Contact.new(contact_params) 

@contacts.save 
redirect_to @contacts 
end 
end 

private 
    def contact_params 
    params.require(:contacts).permit(:first_name, :last_name, :phone_number,  :notes) 
    end 

мой файл мигрирует:

class CreateContacts < ActiveRecord::Migration 
def change 
    create_table :contacts do |t| 
    t.string :first_name 
    t.text :last_name 
    t.text :phone_number 
    t.text :notes 

     t.timestamps null: false 
    end 
    end 
end 

И я смотрю в моем терминале, и я вижу это:

Started POST "/contacts" for 127.0.0.1 at 2015-07-16 14:38:54 -0700 
Processing by ContactsController#create as HTML 
    Parameters: {"utf8"=>"✓",  "authenticity_token"=>"5l/werImOvbiPAq4rGB6oj8TILHKVVy96GGgRntzP2UwZxj6cSmIDsHzs  RQZXbqHJATp60QMuRg7HWlLY5hf/w==", "contacts"=>{"First_name"=>"Hello",  "Last_name"=>"AAGIN", "Phone_Number"=>"1231313", "Notes"=>"smsda"},  "commit"=>"Save Contacts"} 
Unpermitted parameters: First_name, Last_name, Phone_Number, Notes 

Я думаю, что они могли бы что-то о части «неперечисленных параметров», потому что там, похоже, есть разница в кепках.

Если вы видите что-то не так, сообщите мне! Спасибо. править = вот мое мнение:

<h1>New Contact</h1> 

<%= form_for :contacts, url: contacts_path do |f| %> 
    <p> 
    <%= f.label :First_name %><br> 
    <%= f.text_field :First_name %> 
    </p> 
    <p> 
    <%= f.label :Last_name %><br> 
    <%= f.text_field :Last_name %> 
    </p> 
    <p> 
    <%= f.label :Phone_Number %><br> 
    <%= f.text_field :Phone_Number %> 
    </p> 
    <p> 
    <%= f.label :Notes %><br> 
    <%= f.text_area :Notes %> 
    </p> 

    <p> 
    <%= f.submit %> 
    </p> 
<% end %> 

<%= link_to 'Back', contacts_path %> 
+0

Здравствуйте ИК, добро пожаловать в StackOverflow , Нам также нужно будет увидеть ваше мнение. :) – BroiSatse

+0

Спасибо всем за вашу помощь, проблема на самом деле была на мой взгляд, некоторые имена были неправильными. Спасибо, что указали на мои имена контактов, наверняка мне нужно это исправить! :) – echa

ответ

0

Вы не согласуются с контактами и контактом. Измените свою линию.

params.require(:contact).permit(:first_name, :last_name, :phone_number,  :notes) 

Имя ваши переменные в соответствии с Rails конвенций совместно @contacts должен быть изменен на @contact.

+0

А также в форме 'form_for: contacts' следует изменить на' form_for: contact'. – Pavan

-1

Вы не создаете новый объект в новом действии, поэтому форма берет нулевой объект и не заполняется новыми данными из формы. Попробуйте что-то вроде

def new 
    @contact = Contact.new 
end 

, а также, вы используете @contacts вместо @ Контакт в создать и показать действия, для шоу просто именование вещь, семантика .. но для создания нужно использовать @contact, который вы создали в новом действии.

Последнего синтаксис для Params является params.require (: контакт) нет контактов, всегда читать ваш код в рельсах и проверьте, семантика, имеет смысл, это сделает вашу жизнь легко

 Смежные вопросы

  • Нет связанных вопросов^_^