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」里放,讯息的內容
使用这些资料,显示资料。

在这个章设定的內容是, 这个四个设定。

全部都在「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」文件
这个三个设定文件。

里面的两个文件是,作资料库设定文件的时候

 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」的內容。

 设定的內容,请参考这里


到这里,设定好了讯息机能了。

设定的內容请参考这里