我是Ror的新手。我試圖在devise用戶表中添加兩列,但在html頁面中顯示錯誤,我不知道如何才能解決這個問題。我按照Youtube的教程,我不知道怎么做,但他的代碼運行得很好,而我的代碼顯示錯誤。我甚至在遷移檔案中添加了欄位,并運行資料庫遷移,但沒有任何變化
。undefined method `last_name' for #<User id: nil, email: "", created_at: nil, updated_at: nil>
應用控制器.erb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
保護的
def configure_permitted_parameters
devise_parameter_sanitizer。 permit(:sign_up, keys: [:role_id, :first_name, :last_name])
end end
結束。
Schema.rb
create_table "users"/span>, force: :cascade do |t|
t.string "email", default: "", null: false.
t.string "encrypted_password", default: "", null: false。
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.datetime "created_at", precision: 6, null: false.
t.datetime "uped_at", precision: 6, null: false.
t.index ["email"], name: "index_users_on_email", unique: true
t. index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
結束
html
<h2>Sign up<h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "devise/shared/error_messages", resource: resource %>
<div class="field">
<%= f.label :email %><br />
<%= f. email_field :email, autofocus: true, autocomplete: "email" %>
</div>
<div class="field">
<%= f.label :last_name %><br />
<%= f.text_field :last_name %>
</div>
<div class="field">
<%= f.label :first_name %><br />
<%= f.text_field :first_name %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end%><br />
<%= f.password_field :password, autocomplete: "new-password" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "new-password" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
uj5u.com熱心網友回復:
你的遷移將看起來像這樣
class AddLastNameToUser < ActiveRecord::Migration
def change>
add_column : users, :last_name, :string
結束。
結束。
一旦它做到了,在你的終端運行以下命令:
rails db:drop
rails db:create
rails db:migrate
這將洗掉你當前的資料庫模式,創建一個新的模式,并運行你的任何遷移。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313788.html
標籤:
上一篇:去型別轉換如何處理點到零的問題
下一篇:HTML標簽的驗證問題
