產生第二個 model
以及讓這兩個 model 有所關聯
之前已經先建了 girb 這個 model,然後新產生一個 model 為 bang,並開一個欄位 girb_id
藉由欄位 girb_id,這個 model bang 能和 model girb 有所關連
rails g model bang girb_id:integer
rake db:migrate
僅僅 bang 裡面有 girb_id 這個欄位讓他們有所關聯還不夠
並需指明他們是怎麼關係的一個關連
在這裡是一個 girb ,可以有很多的 bang
girb 裡面有很多 bang
app/models/girb.rb
class Girb < ActiveRecord::Base
has_many :bangs, dependent: :destroy
end
bang 屬於 girb
app/models/bang.rb
class Bang < ActiveRecord::Base
belongs_to :girb
end
到 routes.rb 加入新寫好的 on_click_bang
config/routes.rb
Rails.application.routes.draw do
resources :girbs do
member do
post :like, <strong>:on_click_bang</strong>
end
end
end
到 controoler 寫好相對應的 code
app/contorller/girbs_controller.rb
class GirbsController < ApplicationController
def index
@girbs = Girb.all
end
def like
@girb = Girb.find(params[:id])
@girb.like += 1;
@girb.save
redirect_to(girbs_path)
end
def on_click_bang
@girb = Girb.find(params[:id])
@girb.bangs.create
redirect_to(girbs_path)
end
private
def girb_params
params.require(:girb).permit(:name, :email, :like)
end
end
相對應的 view
app/views/gribs/index.html.erb
<h1>Index Page of Girb</h1>
<table>
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Like</th>
<th>Bang</th>
</tr>
</thead>
<tbody>
<% @girbs.each do |girb| %>
<tr>
<td><%= girb.name %></td>
<td><%= girb.email %></td>
<td>
<%= link_to like_girb_path(girb.id), method: :post do %>
<%= girb.like %>
<% end %>
</td>
<td>
<%= link_to on_click_bang_girb_path(girb.id), method: :post do %>
<%= girb.bangs.size %>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
鍵入
http://localhost:3000/girbs
可以發現多了一個欄位 bang,並且可以點擊資料更新
不是很了解bang的作用是什麼?
是點擊後導引到其個別的girb,又產生一個關連到grib卻又沒有內容的bang?
其實bang,可以做成與like同樣的數字欄位來計算點擊數嗎?
建議你的標籤可再加 ruby rails ror 等字樣。
程式碼用慣用的語法縮排會比較好看些。