2020年2月18日 星期二

ch02_Rails gem devise安裝 使用者/登入(1)

安裝devise gem

ctrl-p>Gemfile
gem'devise'

bundle install

terminal
/bundle install

安裝devise使用User

rails generate devise:install

確定有設定root首頁first page

2. Ensure you have defined root_url to *something* in your config/routes.rb.
在routes裡面加進下面的文字
 For example:
root to: “home#index”

當登入或是發生錯誤要顯示彈跳視窗給使用者可以使用這組設定加到layout

3. Ensure you have flash messages in app/views/layouts/application.html.erb.
 For example:
<p class=”notice”><%= notice %></p>
<p class=”alert”><%= alert %></p>

讓Table的名稱叫做User

rails generate devise User

刷新資料庫結構

rails  db:migrate

使用者登入

http://localhost:3000/users/sign_in

帶判斷的devise登入登出功能

ctrl-p>application.html.erb
  <% if current_user %>
    <%=current_user.email%> |
    <%= link_to('登出', destroy_user_session_path, :method => :delete) %> |
    <%= link_to('修改密碼', edit_registration_path(:user)) %>
  <% else %>
    <%= link_to('註冊', new_registration_path(:user)) %> |
    <%= link_to('登入', new_session_path(:user)) %>
  <% end %>

加上自訂欄位到 Devise 的註冊和編輯頁面


跟增加欄位一樣,只是是加進users裡面的欄位,但是會影響的層面有很多歐,以下這三動了一個都會很慘歐。

增加欄位

rails g migration add_nickname_to_users nickname:string >注意為users,複數
rails db:migrate

注意要補上permitted_parameters方法

ctrl-p>application_controller.rb>

  class ApplicationController < ActionController::Base
    before_action :configure_permitted_parameters, if: :devise_controller?

    # ...

    protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
      devise_parameter_sanitizer.permit(:account_update, keys: [:nickname])
    end
  end

創devise的view

$ rails generate devise:views

編輯views/devise/registrations/edit.html.erb和views/devise/registrations/new.html.erb,加上username欄位

  <div><%= f.label :nickname %><br />
  <%= f.text_field :nickname %></div>



沒有留言:

張貼留言

cloud9上面開發rails

 使用IAM身分登入,以免有資安問題。(用admin帳號登入,創建iam使用者,然後在上面的連結登入) 選擇 ubuntu18.04 減少查詢成本。 已經是超級使用者了,sudo 什麼都不需要輸入密碼了。 $ ruby -v  檢查 ruby使用的版本>>2.6.3,...