4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rails】足跡機能の作り方

Posted at

マッチングアプリを練習で作っているのですが、
足跡機能の作り方がわからず、困っていたけど、 出来たので、投稿します!

目的

足跡機能の実装

準備

User model作成
Footprint model作成

footprint.db
class CreateFootprints < ActiveRecord::Migration[5.2]
  def change
    create_table :footprints do |t|
      t.string :visiter_id
      t.string :visited_id
      t.timestamps
    end
    add_index :footprints, :visiter_id
    add_index :footprints, :visited_id
    add_index :footprints, [:visiter_id, :visited_id], unique: true
  end
end
routes
  resources :users do
    resources :footprints, only: [:index, :create]
    member do
      get :profile
      get :follower
      get :following
    end
  end
user.rb
class User < ApplicationRecord
  has_many :footprints
footprint.rb
class Footprint < ApplicationRecord
  belongs_to :user, optional: true
end

view,controller作成

viewについては、userのprofileを見たら、footprintがcreateされるようにする。
form_withを使って、profileページが開いたら、submitするようにセットする。

profile.html.haml
class Footprint < ApplicationRecord

:javascript
  $("#footprint_js").trigger('click')

.body-white
  .profile
    = form_with model: @footprint, url: user_footprints_path(current_user) do |f|
      = f.hidden_field :visited_id, value: @user.id
      = f.hidden_field :visiter_id, value: current_user.id
      = f.submit "", style: 'display:none', id: "footprint_js"
    .profile-tittle
      %h1 プロファールの設定
他省略、、

jsでクリックされる。
formは見えないようにdisplay:noneにする。

controllerは受け取るのみ

footprint.controller
  def create
    Footprint.create(footprint_params)
  end

  private

  def footprint_params
    params.require(:footprint).permit(:visiter_id, :visited_id)
  end

 footprint.rbでoptional: trueとしておかないと、createされないので、注意が必要。

以上、足跡機能でした。

4
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?