需求:
我们需要两个model,一个是用户(字段1,字段2,...),一个是银行卡(字段1,字段2,...)。关联两个model,使得每一个用户都能查看、新建、修改、删除他的银行卡。
第一步,建立用户model和其中的字段。
这里不赘述了 ,请翻看之前的文章。
第二步,新建model:bank_card,让它属于用户。
新建bank_card.rb
class BankCard < ApplicationRecord
belongs_to :user
end
在user.rb
中也做关联,用户拥有多张银行卡。
class User < ApplicationRecord
has_many :bank_cards
end
第三步,建立bank_cards数据表。
rails g migration create_bank_cards
class CreateBankCards < ActiveRecord::Migration[5.2]
def change
create_table :bank_cards do |t|
t.string :number
t.string :status
t.string :bank_name
t.integer :user_id
t.timestamps
end
end
end
第四步,建立路径。
在routes.rb中插入resources :bank_cards
。
第五步,建立bank_cards_controller.rb
class BankCardsController < ApplicationController
def index
@bank_cards = BankCard.includes(:user)
end
end
查出卡和相关的用户。
第五步,建立bank_cards/index.html.erb
<h2>银行卡#index</h2>
<table>
<tr>
<td>序号</td>
<td>卡号</td>
<td>银行名称</td>
<td>用户名称</td>
<td>状态</td>
</tr>
<% @bank_cards.each_with_index do |card, index| %>
<tr>
<td><%= index + 1 %></td>
<td><%= card.number %></td>
<td><%= card.bank_name %></td>
<td><%= card.user.name %></td>
<td><%= BankCard::STATUS[card.status] %></td>
<td><%= link_to '查看', card %> | </td>
<td><%= link_to '修改', edit_bank_card_path(card) %> | </td>
<td><%= link_to '删除', card, method: :delete %> | </td>
</tr>
<% end %>
<tr>
<td><%= link_to '增加银行卡', new_bank_card_path %></td>
</tr>
</table>
这样,可以正常显示银行卡了 ,我们的index页面就做好了。
路由说明
这里的“查看”和“删除”按钮为
<%= link_to '查看', card %>
<%= link_to '删除', card, method: :delete %>
其中,card为id,而非路由。这里的card为简写,意思是:id=>card.id
完整的路径应写成:
<%= link_to '查看', bank_card_path(:id=>card.id) %>
<%= link_to '删除', bank_card_path(:id=>card.id), method: :delete %>
其中,edit的路径为
<%= link_to '修改', edit_bank_card_path(card) %>```
也是简写,完整写法为:
<%= link_to '修改', edit_bank_card_path(:id=>card.id) %>```