需求:
我们需要两个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
银行卡#index
序号
卡号
银行名称
用户名称
状态
<% @bank_cards.each_with_index do |card, index| %>
<%= index + 1 %>
<%= card.number %>
<%= card.bank_name %>
<%= card.user.name %>
<%= BankCard::STATUS[card.status] %>
<%= link_to '查看', card %> |
<%= link_to '修改', edit_bank_card_path(card) %> |
<%= link_to '删除', card, method: :delete %> |
<% end %>
<%= link_to '增加银行卡', new_bank_card_path %>
这样,可以正常显示银行卡了 ,我们的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) %>```