4
0

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 1 year has passed since last update.

Ruby開発Advent Calendar 2023

Day 17

Rails7×Svelte でWebアプリ開発 part2

Last updated at Posted at 2023-12-16

はじめに

こちらは Rails7×Svelte でWebアプリ開発 part1 (環境設定、簡単な表示まで) の続きになります

Svelte コンポーネントに props を渡す

User model, 詳細画面用の controller, views を作成します

$ bin/rails g model User name:string email:string
$ bin/rails db:migrate
$ bin/rails g controller users show

適当なデータを作成します試しにこちらを使います

irb(main):001> User.find(1)
  TRANSACTION (0.0ms)  begin transaction
  User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
=> 
#<User:0x000000011303a890
 id: 1,
 name: "Taro",
 email: "taro@example.com",
 created_at: Mon, 11 Dec 2023 13:18:54.652145000 UTC +00:00,
 updated_at: Mon, 11 Dec 2023 13:18:54.652145000 UTC +00:00>

これらを erb でviewを作成します。
そのHTMLにelementを設置, ユーザーデータを送信します

app/views/users/show.html.erb
<p style='color: green'><%= notice %></p>

<%= content_tag :div, '', id: 'users-show', data: { name: @user.name, email: @user.email }%>
<%= vite_javascript_tag 'users-show' %>

それらをフロント側で使います

app/frontend/entrypoints/users-show.js
import UsersShow from '../components/UsersShow.svelte'

const target = document.getElementById('users-show')

new UsersShow({
  target: target,
    props: {
      user: {
        name: target.dataset['name'],
        email: target.dataset['email'],
      },
    }
})
app/frontend/components/UsersShow.svelte
<script>
  export let user;
</script>

<p>User: {user.name}</p>
<p>Email: {user.email}</p>

javascriptで送ったデータをsvelteコンポーネントに渡してrenderできます。

スクリーンショット 2023-12-11 22.33.41.png

overmind を使う

前回の動作確認した際、以下の2つターミナルからサーバーを2つ立てる必要がありました

$ bin/rails s
$ bin/vite dev

foreman, overemind を使ってまとめてサーバーを立てるように改善しましょう

参考) https://way-too-mainstream.vercel.app/articles/using-overmind-for-vite-rails-dev

macであれば brewから tmux, overmind をインストールします

$ brew install tmux
$ brew install overmind

立ち上げるコマンドを以下のファイルで作成

Procfile.dev
vite: bin/vite dev
web: bin/rails s

こちらのファイルからovermind を起動することでrails, svelte サーバーを立ち上げられるようになりました!!

$ overmind start -f Procfile.dev

さいごに

  • svelteにデータを送る
  • overmindを使って vite, rails サーバーを楽に立ち上げることをできるようにしました
4
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?