2 : 作訊息

上章 : Mugcup(基礎編)的複習

Coffeecup header2

0 : 這個章的目的

  上章作的「message-app」裡追加訊息機能。
使用到這裡學習的內容, Chrome messages users 1 owner after posts 在各個「show」網頁上,作跟上面圖像一樣會員的留言板吧。
例如說,用「湘南花子」的會員資料,移動到顯示「山田太郎」的會員資料的網頁的話Chrome messages users 1 no messages 會員的資料的下邊,會顯示留言版。

在這個網頁上打入訊息 Chrome messages users 1 input message 打入的訊息 Chrome messages users 1 after post message 會出現訊息。

接着用「山田太郎」的會員資料登入, Chrome messages users 1 owner 可以看到訊息的資料。

在這裡打入訊息 Chrome messages users 1 owner input 會出現訊息的內容。 Chrome messages users 1 owner after posts 在這裡使用「messages」資料庫的「create」的資料操作,作訊息。
這裡的留言版也顯示資料庫裡保存的資料。資料庫裡面,差不多是下面圖像的內容。 Sequel pro messages database content 資料庫的
  • 「user_id」裡放,作訊息的會員的「id」
  • 「receiver」裡放,受到訊息的會員的「id」
  • 「content」裡放,訊息的內容
使用這些資料,顯示資料。

在這個章設定的內容是, 這個4個設定。

全部都在「posts」資料庫的網頁裡設定過的內容吧。
那麽,開始做吧!


1 : 作資料庫

為了作留言版,首先作「messages」的資料庫吧!

 「message」資料庫的框子的設定文件要怎麼作呢?
※ 不知道的話,請參考這裡


terminal
1 rails g model message

打入好了嗎?
db > migrate > 日子_create_messages.rb是在這裡作好的設定文件。
接着在,作好的設定文件上追加內容吧!
在這裡會作跟下面一樣的資料庫。

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

user_id」裡放作訊息的會員號碼「id」,「receiver」裡放受到訊息的會員號碼「id」。
上面的資料是,「id是91」的會員送給「id是20」的會員的「你好」的訊息

網絡聊天的網站裡面是,差不多這樣子保存資料。

用Sublime Text打開,db > migrate > 日子_create_messages.rb之後,編輯內容吧!(打開Sublime Text的方法請參考這裡
※ 詳細請參考這裡

 日子_create_messages.rb(追加第5〜7行)
※ 用半母字母數字打入。一起點擊「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

這個設定在作放長的文章的「content」,放數字的「user_id」,放數字的「receiver

設定好了之後,作設定內容的資料庫吧!
在terminal打入下面的命令吧。

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

 不動的話,在前面「bundle exec」追加,打入「bundle exec rake db:migrate」吧。

這樣子「messages」資料庫作好了!
作完這裡,用 Sequel Pro / SqliteBrower 看看「messages」資料庫的內容吧
※ 打開Sequel Pro的方法請參考這裡,打開SqliteBrowser的方法請參考這裡 Sequel pro messages database 這樣做好資料庫的設定了,接着做網頁的設定吧!

設定的內容請參考這裡


2 : 設定網頁

作好資料庫了,接着設定網頁吧!
在網頁的設定裡
  • 七個網頁的設定(routes.rb
  • 資料操作的設定(controller
  • 顯示網頁的設定(views
做這個三個設定。

設定開始之前,作資料操作・網頁顯示的設定文件吧!
※ 詳細請參考這裡

terminal
1 rails g controller messages

用這個打入作了
  • 操作資料的文件「app > controllers > messages_controller.rb
  • 顯示網頁的文件夾「app > views > messages
這個文件文件夾。
首先從「七個網頁裡使用那些網頁的的設定(routes.rb)」開始做吧!

 ① : routes.rb


剛開始從config > routes.rb開始設定。
這一次的網頁是, Chrome messages users 1 after post message 像上面的圖像一樣,「users」資料庫的「show」網頁上做「messages」資料庫的資料操作跟網頁顯示

在「users」網頁上設定


這個兩個資料操作的設定。

加上,在這裡不會做顯示一個資料・編輯資料・刪除資料,
所以在「messages」資料庫使用的網頁只有「create」而已(show跟new的資料操作在users的操作資料文件裡設定)。

那麽編輯「routes.rb」吧!
※ 不知道的話,請參考這裡

 routes.rb(追加第7行)
※ 用半母字母數字打入。一起點擊「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

這樣設定好「routes.rb」了。

接下設定資料操作吧!

設定的內容請參考這裡


 ② : 資料操作


接下做資料操作吧。
資料操作在messages_controller.rb」「users_controller.rb這個兩個設定文件上設定。

這樣子的資料操作設定。

那麽做做看吧!

 ⑴ : messsages_controller.rb


首先從「messages_controller.rb」的「新增資料(create)開始做。

打開app > controllers > messages_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

說明裡面的內容吧!
 事先第3行

3 before_action :authenticate_user!, :only => [:create]

這個是只讓登入的會員顯示網頁的設定
※ 詳細請參考這裡
這一次只在「messages」資料庫的「create」裡設定這個限制。
 接下第6行

6 @message = Message.create(params.require(:message).permit(:user_id, :receiver, :content).merge(:user_id => current_user.id))

這個「Message.create(...)」在新增資料。
※ 詳細請參考這裡

6 .merge(:user_id => current_user.id)

在設定「user_id」裡放,在登入的會員「current_user」的「id」的內容
※ 詳細請參考這裡
 最後第7行

6 redirect_to :back

在這裡,使用redirect_to做網頁移動。
※ 詳細請參考這裡

這一次使用:back的設定。這個:back在設定上一個網頁。
所以

6 redirect_to :back

是移動到上頁的設定。
這一次的網頁是,在輸入框打入訊息, Chrome messages users 1 input message 點擊登錄按鈕之後, Chrome messages users 1 after post message 會移動到上一個網頁。所以設定

6 redirect_to :back

這樣的內容。

接着設定「users_controller.rb」的內容。


 ⑵ : users_controller.rb


「users_controller.rb」裡設定 的內容
那麽打開app > controllers > users_controller.rb,編輯內容吧!

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


5 6 7 8 9 def show @user = User.find(params[:id]) @messages = Message.where(:receiver => @user.id) @message = Message.new end

說明內容吧。
 首先第7行

7 @messages = Message.where(:receiver => @user.id)

在這個設定
選擇「receiver」跟網頁的會員資料「@user」的「id」一樣的「messages」資料庫的資料
※ where的說明請參考這裡

這樣選擇顯示的會員的「messages」資料庫的資料了。

網頁的留言版上顯示在這裡設定的標記「@messages的內容。 Chrome messages users 1 owner after posts
 最後第8行

8 @message = Message.new

在這個設定,
為了作輸入框,作新的「messages」資料。
※ 詳細請參考這裡

使用在這裡設定的「@message」,作訊息的輸入框。 Chrome messages users 1 owner after posts 這樣子設定好資料操作了!

最後總結在這個章的內容!


 ⑶ : 總結


在這裡設定的是,
  • redirect_to :back
  • Message.where(條件)
這個兩個設定。
 redirect_to :back

為了返回上頁,

1 redirect_to :back

使用這個設定。
 Message.where(條件)

為了從「messages」資料庫選擇資料,使用

1 @messages = Message.where(:receiver => @user.id)

的設定。

這一次的設定是選擇跟「receiver」一樣的「@user」的「id」的「messages」資料
這樣做好了資料操作的設定了。

接著做網頁顯示的內容吧!


設定的內容請參考這裡


 ③ : 網頁顯示


接着做網頁顯示吧。
網頁顯示在users」資料庫的「show.html.erb裡設定內容。
在上面設定的messages」資料庫的「create是,應為使用

6 redirect_to :back

不會顯示網頁,所以顯示的內容只有users」資料庫的「show.html.erb
在這裡用「messages」資料庫,設定
  • 訊息的顯示

  • 使用顯示全部的資料(index)說明的反覆顯示資料的設定,顯示複數的訊息資料「@messages」。

    1 2 3 4 5 <% @posts.each do |p| %> <p><a href="/users/<%= p.user_id %>"><%= User.find(p.user_id).family_name %><%= User.find(p.user_id).first_name %>様</a>的投稿</p> <h3><a href="/posts/<%= p.id %>"><%= p.content %></a></h3> <hr> <% end %>

  • 輸入框跟按鈕的設定

  • 使用打入新的資料(new)上說明的內容,顯示資料的輸入框・按鈕。

    1 2 3 4 5 6 7 8 9 <%= form_for @post do |f| %> <p>内容</p> <%= f.text_area :content, :class => "form-control my-form" %> <br> <p>地方</p> <%= f.text_field :place, :class => "form-control my-form" %> <hr> <%= f.submit "登錄", :class => "btn btn-primary" %> <% end %>

這些內容吧。


設定之前,首先在遊覽列・navigation-bar上追加移動到「users」資料庫的網頁的連結。
※ 詳細請參考這裡
遊覽列在app > views > layouts > application.html.erb設定內容。

在這個app > views > layouts > application.html.erb裡追加設定吧!
※ 詳細請參考這裡

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


23 24 25 26 27 28 29 30 31 31 <ul class="nav navbar-nav navbar-right"> <% if user_signed_in? %> <li><a href="/users">會員一覽</a></li> <li><a href="/users/<%= current_user.id %>"><%= current_user.family_name %><%= current_user.first_name %></a></li> <li><%= link_to "登出", destroy_user_session_path, :method => :delete %></li> <% else %> <li><a href="/users/sign_up">註冊</a></li> <li><a href="/users/sign_in">登錄</a></li> <% end %> </ul>

在這個2行,設定了
  • 移動到會員一覽的連結
  • 移動到在登入的會員的網頁的連結
的內容。

在這個移動到在登入的會員的網頁的連結裡顯示在登入的會員的名字Chrome messages users 1 no messages 接着設定「messages」資料庫的網頁顯示吧!



在這裡編輯users」資料庫的「show.html.erb的內容,顯示訊息。

訊息的顯示用,在顯示全部的資料(index)說明的反覆資料的方法做。

首先用Sublime Text打開,app > views > users > show.html.erb之後,編輯內容吧!
※ 打開Sublime Text的方法請參考這裡

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


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <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/<%= User.find(m.user_id).id %>"><%= User.find(m.user_id).family_name %><%= User.find(m.user_id).first_name %></a>的訊息</h5> <p><%= m.content %></p> <% 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 %>

那麽說明裡面的內容吧!
 首先第8行跟第12行的

 show.html.erb(第8行)
1 <% @messages.each do |m| %>



 show.html.erb(第12行)
1 <% end %>

之間顯示選擇「messages」資料庫的資料
※ 詳細請參考這裡

users_controller.rb」裡設定的「@messages

 users_controller.rb(第5〜9行)
5 6 7 8 9 def show @user = User.find(params[:id]) @messages = Message.where(:receiver => @user.id) @message = Message.new end

分成一個一個的資料「m」,在第8~12行之間顯示內容。
※ 詳細請參考這裡
 接着設定第9〜11行。

 show.html.erb(第9〜11行)
9 10 11 <h5><%= m.id %> : <a href="/users/<%= User.find(m.user_id).id %>"><%= User.find(m.user_id).family_name %><%= User.find(m.user_id).first_name %></a>的訊息</h5> <p><%= m.content %></p> <hr>

在這裡做
  • 顯示分成的「m」
  • 使用「m」的「user_id」,顯示作訊息的會員的資料
這個兩個。
※ 詳細請參考這裡
但是,這個

 show.html.erb(第9行)
9 <h5><%= m.id %> : <a href="/users/<%= User.find(m.user_id).id %>"><%= User.find(m.user_id).family_name %><%= User.find(m.user_id).first_name %></a>的訊息</h5>

的設定,不會覺得有一點長又麻煩嗎(特別是「User.find...」的部分)?

像這一次的messages」資料庫一樣

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
如果資料庫的框子裡有,跟別的資料庫關聯的框子的話(在這裡是messages」資料庫的「user_id)、

 show.html.erb(9行目)
9 <h5><%= m.id %> : <a href="/users/<%= m.user.id %>"><%= m.user.family_name %><%= m.user.first_name %></a>的訊息</h5>

可以這樣設定。
顯示分成作的「messages」資料「m」的「user」的「id,應該很容易理解。

 但是這樣子而已設定還不會適用,在這裡追加設定。
為了追加設定,在app > models文件夾裡的文件裡追加幾個設定。

首先看app > models文件夾吧!
裡面有
  • 「concerns」文件夾
  • user.rb」文件
  • message.rb」文件
這個3個設定文件。

裡面的兩個文件是,作資料庫設定文件的時候

 terminal
1 rails g devise user

 terminal
1 rails g model message

自動作好的設定文件。
 那麽,追加設定吧!

1 <%= m.user.id %>

要適用這些設定要在user.rb」跟「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
※ 用半母字母數字打入。一起點擊「Command」跟「s」可以保存內容。
 使用Windows的話,點擊「ctrl」跟「s」可以保存內容。


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

 那麽解釋裡面的內容吧!

上面的內容是,像這一次的user」跟「message一樣,

一個資料庫的資料(這一次是「users」)可以拿複數的別的資料庫的資料(這一次是「messages」)時候,
選擇資料的設定。

 設定方法是,

  • 框子的設定

  • 上級的資料庫(可以從別的資料庫裡拿複數資料的資料庫)不用更改
    下級的資料庫裡追加「上級的資料庫的名字(單數)_id」的框子


    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
  • 上級的資料庫(這一次是「users」)

  • app > models > 資料庫的名字(單數).rb裡追加下面的內容。

    1 has_many :下級的資料庫的名字(複數)

  • 下級的資料庫(這一次是「messages」)

  • app > models > 資料庫的名字(單數).rb裡追加下面的內容。

    1 belongs_to :上級的資料庫的名字(單數)

這樣設定。
在上面設定

1 <%= m.user.id %>

可以從「messages」資料庫選擇作訊息的「users」的資料
相反的也可以從「users」資料庫選擇會員做的「messages」的資料

要設定這個,

1 @messages = @user.messages

這樣設定。在選擇的「users」資料庫的資料後面追加「.messages」(複數
 那麽如果,像下面在拿複數的「posts」資料庫的資料的「users」資料庫裡,設定

posts
id content user_id created_at updated_at
192 晚安 91 2016-03-02 16:13:52 2016-03-02 16:13:52
users
id family_name first_name created_at updated_at
91 山田 太郎 2016-02-02 10:42:18 2016-02-02 16:42:18

 從@post選擇會員資料

1 @user = @post.user

 從@user選擇投稿資料

1 @posts = @user.posts

的話,
  • app > models > post.rb
  • app > models > user.rb
裡設定怎麼樣的內容好呢?

※ 上面放鼠標,可以看答案。



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


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

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


1 2 3 4 5 class User < ActiveRecord::Base has_many :posts end

最後,看看設定的內容吧!

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


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <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 %> <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 %>

接着設定輸入框・按鈕的顯示吧。 Chrome messages users 1 owner after posts



users」資料庫的「show.html.erb裡設定顯示輸入框・按鈕吧。

顯示輸入框・按鈕的的設定是,在打入新的資料(new)說明的方法做。

用 Sublime Text 打開app > views > users > show.html.erb文件吧!
※ 打開Sublime Text的方法,請參考這裡吧。

 show.html.erb
※ 用半母字母數字打入。一起點擊「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| %> <h5><%= m.id %> : <a href="/users/<%= m.user.id %>"><%= m.user.family_name %><%= m.user.first_name %></a>的訊息</h5> <p><%= m.content %></p> <hr> <% 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 %>

那麽解釋內容吧!
 首先從第14、19行開始

 show.html.erb(第14行)
14 <%= form_for @message do |f| %>



 show.html.erb(第19行)
19 <% end %>

之間用新增的「@message」資料作輸入框跟資料的發信按鈕
※ 詳細請參考這裡

messages_controller.rb」裡設定的「@message」,

 messages_controller.rb(第5〜9行)
5 6 7 8 9 def show @user = User.find(params[:id]) @messages = Message.where(:receiver => @user.id) @message = Message.new end

分成一個一個的資料「f」、在第19行之前顯示輸入框跟發信按鈕。
※ 詳細請參考這裡
 接着說明第15〜18行吧。

 show.html.erb(第15〜18行)
15 16 17 18 <%= f.text_area :content, :class => "form-control my-form", :placeholder => "留下留言吧!" %> <%= f.hidden_field :receiver, :value => @user.id %> <br> <%= f.submit "登錄", :class => "btn btn-warning" %>

可以理解在第15行設定輸入框吧。
※ 詳細請參考這裡

15 <%= f.text_area :content, :class => "form-control my-form", :placeholder => "留下留言吧!" %>

這一次在後面追加了

1 :placeholder => "留下留言吧!"

的內容吧。
在這個部分,設定輸入框裡沒有打入資料的時候顯示的內容。 記住這個設定吧。
接著第18行裡,可以看到按鈕的設定吧。
※ 詳細請參考這裡

18 <%= f.submit "登錄", :class => "btn btn-warning" %>

這一次在設定「btn-warning」的黃色的按鈕。
最後解釋第16行吧。

16 <%= f.hidden_field :receiver, :value => @user.id %>

這個是沒有解釋過的設定。

裡面有「:receiver」,可以推測是在作「:receiver」的輸入框的設定吧。
但是,網頁上沒有顯示輸入框。
※ 看看0.0.0.0:3000/users/1吧。
 看看localhost:3000/users/1吧。 Chrome messages users 1 no messages 這個是不想用輸入框設定資料庫的內容的時候使用的輸入框。在「:receiver」的框子裡放網頁的會員資料「@user」的「id」的設定。

在這個「users」資料庫的「show」網頁上,已經知道要對誰發信所以不用讓利用者打入內容。所以使用這個內容。
像這樣,不用讓利用者打入的資料的時候要,
<%= f.hidden_field :框子的名字, :value => 要放的資料 %>
這樣設定。

 那麽,在「:place」的框子裡放「@user」的「location」資料「hidden_field」的設定要怎麼設定好呢?


1 <%= f.hidden_field :place, :value => @user.location %>

不用打入的資料要用「hidden_field」發信。
這樣做好了網頁的設定了。

到這裡,試試看訊息的新增・顯示可不可以做!

※ 一起點擊「Command」跟「c」停止,用rails s打開的服務器之後,再打入「rails s」吧。


 使用Windows的話、
 一起點擊「ctrl」跟「c」停止,用「rails s」打開的服務器之後,再打入「rails s」吧。


做好之後,打開「0.0.0.0:3000/users/1」吧!
 使用Windows的話,打開「localhost:3000/users/1」吧。

有沒有顯示下面圖像一樣的畫面嗎? Chrome messages users 1 no messages 在這裡的輸入框裡打入資料之後,點擊登錄 吧! Chrome messages users 1 input message 像下面的圖像一樣,有沒有顯示訊息了嗎? Chrome messages users 1 after post message 在Sequel Pro裡,看看資料有沒有保存在資料庫吧。
※ 打開Sequel Pro的方法請參考這裡,打開SqliteBrowser的方法請參考這裡

這樣設定好網頁的設定了!

最後做總結吧。



這一次設定了
  • has_many / belongs_to
  • hidden_field

的內容。
 has_many / belongs_to

如果一個資料庫的資料可以拿別的資料庫裡複數的資料的話,
為了簡單的選擇資料,可以使用has_many」跟「belongs_to的設定。

適用這一些設定,

 在下級的資料庫追加框子

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
像這樣子追加「上級的資料庫的名字(單數)_id」的框子

 app > models > 資料庫的名字(單數).rb

 上級的資料庫的名字(單數).rb

1 has_many :下級的資料庫的名字(複數)

 下級的資料庫的名字(單數).rb

1 belongs_to :上級的資料庫的名字(單數)

追加這一些內容。

 資料的選擇是,

  • 選擇作訊息的會員資料

  • 1 @user = @message.user

  • 選擇會員作的訊息資料

  • 1 @messages = @user.messages

這樣選擇資料。
 hidden_field

不用打入的資料要

1 <%= f.hidden_field :receiver, :value => @user.id %>

這樣設定。

這一次設定「:receiver」裡放「@user」的「id」的內容。

 設定的內容,請參考這裡


到這裡,設定好了訊息機能了。

設定的內容請參考這裡