Ich versuche, ein Login-System in Rails zu erstellen, aber, wenn ich auf der Anmeldeseite gehe, bekomme ich eine Fehlermeldung: "undefined Methode` first_name 'für # ". Ich habe meine Benutzerdatenbank nach der Spalte "first_name" überprüft und festgestellt, dass die einzigen Spalten in der Tabelle "users" "id", "created_at" und "updated_at" waren. Ich habe meine App mit Rails neu erstellt. Appname -d mysql, ich habe das mysql2-Juwel, ich habe meine databases.yml-Datei aktualisiert, und ich habe "rake db: migrate" ausgeführt. Trotzdem funktioniert nichts. Wie kann ich das beheben? Das ist mein Benutzer-Controller:Rails Migration Datei nicht hinzufügen Spalten Mysql-Datenbank
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to '/login'
else
redirect_to '/signup'
end
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password)
end
end
Hier ist mein Router:
Rails.application.routes.draw do
root 'main#index'
get '/login' => 'sessions#new'
get '/signup' => 'users#new'
resources :users
post 'login' => 'sessions#create'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
Hier mein Modell ist:
class User < ApplicationRecord
has_secure_password
end
Hier ist meine Migration-Datei:
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :first_name
t.string :last_name
t.string :email
t.string :password_digest
t.timestamps
end
end
end
Hier ist meine Ansicht:
<div class="login">
<div class="container">
<div class="form">
<h1>Sign up</h1>
<%= form_for(@user) do |f| %>
<%= f.text_field :first_name, :placeholder => "First name" %>
<%= f.text_field :last_name, :placeholder => "Last name" %>
<%= f.email_field :email, :placeholder => "Email" %>
<%= f.password_field :password, :placeholder => "Password" %>
<%= f.submit "Create an account", class: "btn-submit" %>
<% end %>
</div>
</div>
</div>
Ich bin mit Rails 5.0.2 auf Ubuntu 16.04
können Sie versuchen, die letzte Migration remigrieren (db: migrate: Redo) –
Ich habe versucht, und es hat funktioniert. Vielen Dank! –