作訊息:設定一覽

作訊息

Coffeecup header2

0 : 這個章的目的

 看看「作訊息」的設定一覽吧


1 : 設定一覽

作訊息」裡設定
  • 作「messages」資料庫
  • 「7個網頁」的設定
  • 資料操作的設定
  • 網頁顯示的設定
這個4個內容。


在這裡看看設定的內容吧。

  • 作「messages」資料庫

  • 首先在terminal上,作messages資料庫的設定文件。

     terminal
     使用Windows的話,用「命令提示符」。
    1 rails g model message

    編輯,在這個命令作好的「db > migrate」文件及裡的「日子_create_messages.rb」

     日子_create_messages.rb
    ※ 用半母字母數字打入。一起點擊「Command」跟「s」可以保存內容。
     使用Windows的話,點擊「ctrl」跟「s」可以保存內容。


    1 2 3 4 5 6 7 8 9 10 11 12 class CreateMessages < ActiveRecord::Migration def change create_table :messages do |t| t.text :content t.integer :user_id t.integer :receiver t.timestamps null: false end end end

    這樣設定好了下面一樣的資料庫。

    messages
    id content user_id receiver created_at updated_at
    192 你好 91 20 2016-03-02 16:13:52 2016-03-02 16:13:52

    最後適用資料庫的設定。

     terminal
     使用Windows的話,用「命令提示符」。
    1 rake db:migrate

    這樣子作好下面圖像一樣的資料庫了。 Sequel pro messages database
    資料庫做好了,接着為了作網頁做
    • 「7個網頁」的設定
    • 資料操作的設定
    • 網頁顯示的設定
    這個3個設定

     首先從「七個網頁」的設定開始做。

  • 「7個網頁」的設定

  • 「7個網頁」的設定要在,route.rb裡面設定。

     route.rb
    ※ 用半母字母數字打入。一起點擊「Command」跟「s」可以保存內容。
     使用Windows的話,點擊「ctrl」跟「s」可以保存內容。


    1 2 3 4 5 6 7 8 9 10 ... 63 Rails.application.routes.draw do devise_for :users resources :welcome, :only => [:index] root "welcome#index" resources :users, :only => [:show, :index, :edit, :update] resources :messages, :only => [:create] # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". # 省略 end

    這樣設定好了,messages」資料庫的網頁顯示只用「create的設定。

  • 資料操作的設定

  • 資料操作的設定在
    • messages_controller.rb
    • users_controller.rb
    這個兩個文件設定內容。

     messages_controller.rb
    ※ 用半母字母數字打入。一起點擊「Command」跟「s」可以保存內容。
     使用Windows的話,點擊「ctrl」跟「s」可以保存內容。


    1 2 3 4 5 6 7 8 9 10 class MessagesController < ApplicationController before_action :authenticate_user!, :only => [:create] def create @message = Message.create(params.require(:message).permit(:user_id, :receiver, :content).merge(:user_id => current_user.id)) redirect_to :back end end

     users_controller.rb(追加第7、8行)
    ※ 用半母字母數字打入。一起點擊「Command」跟「s」可以保存內容。
     使用Windows的話,點擊「ctrl」跟「s」可以保存內容。


    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 class UsersController < ApplicationController before_action :authenticate_user!, :only => [:show, :index, :edit, :update] def show @user = User.find(params[:id]) @messages = Message.where(:receiver => @user.id) @message = Message.new end def index @users = User.all end def edit @user = User.find(params[:id]) if @user.id == current_user.id else redirect_to "/" flash[:alert] = "無效的會員" end end def update @user = User.find(params[:id]) if @user.id == current_user.id @user.update(params.require(:user).permit(:first_name, :family_name, :self_introduction, :age)) redirect_to "/users/#{@user.id}/edit" flash[:notice] = "編輯好了!" else redirect_to "/" flash[:alert] = "無效的會員" end end end

    這樣做好了在users」資料的「show」網頁新增「messages」資料的設定了。

  • 顯示網頁的設定

  • 最後在app > views > users > show.html.erb裡面設定「users」資料庫的「show」網頁的顯示。

     show.html.erb(第5〜19行)
    ※ 用半母字母數字打入。一起點擊「Command」跟「s」可以保存內容。
     使用Windows的話,點擊「ctrl」跟「s」可以保存內容。


    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <h1>會員資料</h1> <hr> <p>名字:<%= @user.family_name %><%= @user.first_name %>(<%= @user.age %>歲)</p> <p>自我介紹:<%= @user.self_introduction %></p> <hr> <h4>留言版</h4> <% @messages.each do |m| %> <hr> <h5><%= m.id %> : <a href="/users/<%= m.user.id %>"><%= m.user.family_name %><%= m.user.first_name %></a>的投稿</h5> <p><%= m.content %></p> <% end %> <%= form_for @message do |f| %> <%= f.text_area :content, :class => "form-control my-form", :placeholder => "留下留言吧!" %> <%= f.hidden_field :receiver, :value => @user.id %> <br> <%= f.submit "登錄", :class => "btn btn-warning" %> <% end %> <hr> <p><a href="/users" class="btn btn-primary">返回會員一覽</a></p> <% if @user.id == current_user.id %> <p><a href="/users/<%= @user.id %>/edit" class="btn btn-success">編輯會員資料</a> <% end %>

    接着為了使用

    1 <%= m.user.id %>

    這樣的設定,追加了
    • app > models > user.rb
    • app > models > message.rb
    這些設定。

     user.rb(追加第7行)
    ※ 用半母字母數字打入。一起點擊「Command」跟「s」可以保存內容。
     使用Windows的話,點擊「ctrl」跟「s」可以保存內容。


    1 2 3 4 5 6 7 8 9 class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_many :messages end

     message.rb(追加第3行)
    ※ 用半母字母數字打入。一起點擊「Command」跟「s」可以保存內容。
     使用Windows的話,點擊「ctrl」跟「s」可以保存內容。


    1 2 3 4 5 class Message < ActiveRecord::Base belongs_to :user end