Skip to content

質問一覧・詳細表示機能の非Vue化#8663

Merged
komagata merged 18 commits intomainfrom
chore/question_index_vue_to_vanilla_js
Jul 24, 2025
Merged

質問一覧・詳細表示機能の非Vue化#8663
komagata merged 18 commits intomainfrom
chore/question_index_vue_to_vanilla_js

Conversation

@kushimegu
Copy link
Copy Markdown
Contributor

@kushimegu kushimegu commented May 15, 2025

Issue

概要

質問一覧表示からvueを廃止した。

変更確認方法

  1. chore/question_index_vue_to_vanilla_jsをローカルに取り込む
  2. ユーザーhajimeでログインする
  3. 質問一覧ページにアクセスし、質問一覧が表示されることを確認する
  4. 未解決・解決済み・全ての質問をクリックするとそれぞれに対応して質問一覧が入れ替わることを確認する
  5. OS X Mountain Lionをクリーンインストールするの質問一覧ページにアクセスし、全て・解決済み・未解決の質問に対応した質問一覧が表示されることを確認する
  6. PC性能の見方を知るの質問一覧ページにアクセスし、全ての質問には「質問はありません」解決済みでは「解決済みのQ&Aはありません」未解決の欄では「未解決のQ&Aはありません」と表示されることを確認する
  7. ユーザーごとの質問一覧ページに質問一覧が表示されることを確認する
  8. ログアウトし、ユーザーhatsunoでログインする
  9. ユーザーの質問一覧ページに「質問はありません」と表示されることを確認する

Screenshot

vue.js廃止のため画面の変更はなし。
質問一覧表示の一例が以下のようになっている。

変更前

Q A変更前

変更後

スクリーンショット 2025-06-05 15 40 32

Summary by CodeRabbit

Summary by CodeRabbit

  • 新機能

    • 質問リストやカードのサーバーサイド描画用パーシャルテンプレートを追加しました。
    • 質問リストのローディング用プレースホルダーを追加しました。
  • 改善

    • 質問一覧ページでVue.jsコンポーネントの利用を廃止し、Railsパーシャルによるサーバーサイド描画に変更しました。
    • 質問一覧にページネーション機能を追加しました。
    • 質問取得時に関連情報を効率的に読み込み、表示順を作成日時の降順に統一しました。
    • 質問の絞り込み機能を追加し、解決済み・未解決の質問をフィルタリング可能にしました。
  • スタイル

    • 質問カードに状態に応じたバッジやアイコンを表示するようにしました。

@kushimegu kushimegu force-pushed the chore/question_index_vue_to_vanilla_js branch 4 times, most recently from f465bcd to 0ae8a3f Compare June 10, 2025 04:31
@kushimegu kushimegu force-pushed the chore/question_index_vue_to_vanilla_js branch from 0ae8a3f to 2e80a26 Compare June 12, 2025 08:40
@kushimegu kushimegu self-assigned this Jun 13, 2025
@kushimegu kushimegu marked this pull request as ready for review June 16, 2025 05:47
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jun 16, 2025

"""

Walkthrough

この変更は、質問リストの表示に関する複数のコントローラーおよびビューを修正し、Vue.jsコンポーネントによるクライアントサイド描画から、Railsのサーバーサイドレンダリングによるパーシャル表示へと移行しています。質問の取得やページネーション、ローディングプレースホルダーも追加されています。

Changes

ファイル群 変更概要
app/controllers/practices/questions_controller.rb
app/controllers/users/questions_controller.rb
質問リスト取得処理を修正し、関連モデルのプリロードやページネーションを追加。
app/views/practices/questions/index.html.slim
app/views/questions/index.html.slim
app/views/users/questions/index.html.slim
Vue.jsコンポーネント呼び出しを削除し、Railsパーシャルによるサーバーサイドレンダリングへ変更。
app/views/questions/_question.html.slim 質問カードアイテムの新規パーシャルを追加。状態に応じた表示やメタ情報を含む。
app/views/questions/_questions.html.slim 質問リストの新規パーシャルを追加。ローディング、空状態、リスト表示、ページネーションを実装。
app/views/shared/_loading_list_placeholder.html.slim ローディング用のプレースホルダーパーツを新規追加。

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Controller
    participant Model
    participant View

    User->>Controller: 質問一覧ページにアクセス
    Controller->>Model: 質問リストを取得(関連データ・ページネーション含む)
    Model-->>Controller: 質問データ返却
    Controller->>View: パーシャルを使って質問リストをレンダリング
    View-->>User: サーバーサイド描画済みHTMLを返却
Loading

Possibly related issues

Poem

さよならVue、こんにちはRailsの春、
サーバーで描くリストの花、
ページをめくれば質問が舞い、
ローディングもうさぎの夢の中。
新しいパーシャルで心も軽やか、
うさぎは今日もコードで跳ねる! 🐇
"""

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 RuboCop (1.75.5)
app/controllers/practices/questions_controller.rb

rubocop-minitest extension supports plugin, specify plugins: rubocop-minitest instead of require: rubocop-minitest in /.rubocop.yml.
For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
rubocop-capybara extension supports plugin, specify plugins: rubocop-capybara instead of require: rubocop-capybara in /.rubocop.yml.
For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
Unable to find gem rubocop-fjord; is the gem installed? Gem::MissingSpecError
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:309:in rescue in gem_config_path' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:293:in gem_config_path'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:84:in block (2 levels) in resolve_inheritance_from_gems' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:82:in reverse_each'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:82:in block in resolve_inheritance_from_gems' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:76:in each_pair'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:76:in resolve_inheritance_from_gems' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader.rb:66:in load_file'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_store.rb:29:in options_config=' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/cli.rb:160:in act_on_options'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/cli.rb:47:in block in run' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/cli.rb:81:in profile_if_needed'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/cli.rb:43:in run' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/exe/rubocop:19:in <top (required)>'
/usr/local/bin/rubocop:25:in load' /usr/local/bin/rubocop:25:in

'

app/controllers/users/questions_controller.rb

rubocop-minitest extension supports plugin, specify plugins: rubocop-minitest instead of require: rubocop-minitest in /.rubocop.yml.
For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
rubocop-capybara extension supports plugin, specify plugins: rubocop-capybara instead of require: rubocop-capybara in /.rubocop.yml.
For more information, see https://docs.rubocop.org/rubocop/plugin_migration_guide.html.
Unable to find gem rubocop-fjord; is the gem installed? Gem::MissingSpecError
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:309:in rescue in gem_config_path' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:293:in gem_config_path'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:84:in block (2 levels) in resolve_inheritance_from_gems' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:82:in reverse_each'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:82:in block in resolve_inheritance_from_gems' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:76:in each_pair'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader_resolver.rb:76:in resolve_inheritance_from_gems' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_loader.rb:66:in load_file'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/config_store.rb:29:in options_config=' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/cli.rb:160:in act_on_options'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/cli.rb:47:in block in run' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/cli.rb:81:in profile_if_needed'
/var/lib/gems/3.1.0/gems/rubocop-1.75.8/lib/rubocop/cli.rb:43:in run' /var/lib/gems/3.1.0/gems/rubocop-1.75.8/exe/rubocop:19:in <top (required)>'
/usr/local/bin/rubocop:25:in load' /usr/local/bin/rubocop:25:in

'


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5c27f3f and 722f086.

📒 Files selected for processing (8)
  • app/controllers/practices/questions_controller.rb (1 hunks)
  • app/controllers/users/questions_controller.rb (1 hunks)
  • app/views/practices/questions/index.html.slim (1 hunks)
  • app/views/questions/_question.html.slim (1 hunks)
  • app/views/questions/_questions.html.slim (1 hunks)
  • app/views/questions/index.html.slim (1 hunks)
  • app/views/shared/_loading_list_placeholder.html.slim (1 hunks)
  • app/views/users/questions/index.html.slim (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (8)
  • app/controllers/users/questions_controller.rb
  • app/views/questions/index.html.slim
  • app/views/users/questions/index.html.slim
  • app/views/shared/_loading_list_placeholder.html.slim
  • app/views/questions/_questions.html.slim
  • app/controllers/practices/questions_controller.rb
  • app/views/practices/questions/index.html.slim
  • app/views/questions/_question.html.slim
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build_and_test
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (3)
app/views/questions/_questions.html.slim (1)

1-9: 空リスト表示メッセージが i18n 未対応

empty_message は controller で組み立てられていますが、ビュー側でハードコードされた日本語文字列を出力しています。
今後の国際化対応を簡単にするため t('questions.empty_message.solved') のような I18n キーを使うことを推奨します。

app/views/questions/_question.html.slim (2)

24-26: 冗長な nil チェック

すでに if question.practice で存在確認が済んでいるため、内側の if !question.practice_id.nil? は不要です。


54-56: 回答数 0 の強調は UX 上分かりにくいかもしれません

answers.empty? のとき is-important を付与していますが、0 件を強調する意図が不明瞭です。
「未回答を目立たせる」目的なら別スタイルやアイコンの方がユーザフレンドリかもしれません。

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 024fd00 and 2e80a26.

📒 Files selected for processing (8)
  • app/controllers/practices/questions_controller.rb (1 hunks)
  • app/controllers/users/questions_controller.rb (1 hunks)
  • app/views/practices/questions/index.html.slim (1 hunks)
  • app/views/questions/_question.html.slim (1 hunks)
  • app/views/questions/_questions.html.slim (1 hunks)
  • app/views/questions/index.html.slim (1 hunks)
  • app/views/shared/_loading_list_placeholder.html.slim (1 hunks)
  • app/views/users/questions/index.html.slim (1 hunks)
🔇 Additional comments (5)
app/views/shared/_loading_list_placeholder.html.slim (1)

1-3: アクセシビリティ向上のため aria-* 属性を付与してください
ローディング用スケルトンは視覚的には問題ありませんが、スクリーンリーダーにはリストが 8 件存在するかのように読み上げられます。
以下のように aria-busy="true" を親要素に、子アイテムに aria-hidden="true" を付与することで、読上げノイズを抑えつつローディング状態を通知できます。

-.card-list.a-card.is-loading
+.card-list.a-card.is-loading[aria-busy="true"]
-  - 8.times do
+  - 8.times do
     .card-list-item[aria-hidden="true"]

[ suggest_optional_refactor ]

app/controllers/users/questions_controller.rb (1)

6-10: N+1 クエリ回避用の関連ロードをもう一段深く検討
includes(%i[correct_answer practice answers tag_taggings tags]) で主要関連は先読みしていますが、ビュー側で question.useranswers.user を参照している場合は追加読み込みが発生します。必要に応じて下記のように拡張をご検討ください。

-@questions = @user.questions.includes(%i[correct_answer practice answers tag_taggings tags]).order(created_at: :desc).page(params[:page])
+@questions = @user.questions
+                   .includes(:user, answers: :user, :correct_answer, :practice, :tag_taggings, :tags)
+                   .order(created_at: :desc)
+                   .page(params[:page])

処理量が増える場合は preload への置き換えも検討すると良いです。
[ request_verification ]

app/views/questions/index.html.slim (1)

55-56: 部分テンプレート側でのコレクションキャッシュを推奨
render 'questions/questions', questions: @questions としているため、ページネーションを跨いで同一質問が再描画されるたびに DB ヒットが起こる可能性があります。_question.html.slim 側で cache(question) do を挟むか、ここで render partial: 'questions/question', collection: @questions へ変更するとキャッシュヒット率が向上します。
[ suggest_optional_refactor ]

app/views/practices/questions/index.html.slim (1)

27-28: 空メッセージローカル変数名の統一を確認
本ビューでは empty_message: @empty_message、他ビューでは @questions_property.empty_message を渡しています。questions/questions 部分テンプレートが両方を受け取れる実装になっているか確認してください。
[ request_verification ]

app/views/users/questions/index.html.slim (1)

9-10: 無限スクロール導入予定なら data-controller 等の拡張を想定して ID を付与
Vue を除去し DOM が静的になったことで、将来 Stimulus などで無限スクロールを実装する際にフックしやすいよう、ラッパー要素に ID もしくは data-controller="questions" を付与しておくと保守性が向上します。
[ suggest_nitpick ]

Comment on lines +1 to +2
- question_class = 'is-solved' if question.correct_answer.present?
- question_class = 'is-wip' if question.wip?
Copy link
Copy Markdown

@coderabbitai coderabbitai bot Jun 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

クラス文字列の上書きにより状態が消える可能性があります

2 行目で question_class = 'is-wip' が上書きされるため、WIP と同時に solved の場合 is-solved が失われます。
配列で管理して join するか、String#<< で追加してください。

-- question_class = 'is-solved' if question.correct_answer.present?
-- question_class = 'is-wip' if question.wip?
+question_classes = []
+question_classes << 'is-solved' if question.correct_answer.present?
+question_classes << 'is-wip'    if question.wip?
+question_class = question_classes.join(' ')

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In app/views/questions/_question.html.slim lines 1 to 2, the assignment to
question_class is overwritten, causing the 'is-solved' class to be lost if both
solved and WIP states are true. Change question_class to an array or use string
concatenation to accumulate both classes, then join or output the combined class
string to preserve all applicable states.

Copy link
Copy Markdown
Contributor Author

@kushimegu kushimegu Jun 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is-wipとis-solvedのクラス名を同時に使うことはないためclass="#{(question.correct_answer.present? && 'is-solved') || (question.wip? && 'is-wip')}"というコードに変えてquestionに正解がある場合にはis-solved、wipの場合はis-wipというクラス名になるように変更しました

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kushimegu ありがとうございます!その通りですね。questionが is-wipis-solved を同時に持つことがないという業務ロジックを理解しました。

あなたの実装 class="#{(question.correct_answer.present? && 'is-solved') || (question.wip? && 'is-wip')}" は、論理OR演算子を使って一つのクラスのみが適用されることを保証する、よりエレガントな解決策ですね。私の配列を使った提案よりもシンプルで適切です。


✏️ Learnings added
Learnt from: kushimegu
PR: fjordllc/bootcamp#8663
File: app/views/questions/_question.html.slim:0-0
Timestamp: 2025-06-30T06:36:32.797Z
Learning: In the bootcamp application, questions cannot be both WIP (work in progress) and solved simultaneously. A question that is still being created (wip?) cannot have a correct answer yet. Therefore, the 'is-wip' and 'is-solved' CSS classes are mutually exclusive.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@kushimegu kushimegu requested review from sharoa119 June 16, 2025 08:55
@kushimegu
Copy link
Copy Markdown
Contributor Author

@sharoa119
お疲れ様です🍵
こちらのレビューをお願いできませんか?

@sharoa119
Copy link
Copy Markdown
Contributor

@kushimegu さん
お疲れ様です。お返事遅くなってすみません。🙇‍♀️

レビューの件なのですが、現状引越し片付けがありほとんど作業ができないので
レビューをすることができません💦
せっかくお声がけいただいたのにすみません。

他のメンバーででできそうな方がいたらそちらの方にお願いしていただけたらありがたいのですが、
もしどうしてもメンバーがいなくて、
再来週になっても問題なければ対応いたしますので、
その時はおっしゃってください。

すぐすぐのお力添えができず、申し訳ないです😫

@kushimegu
Copy link
Copy Markdown
Contributor Author

@sharoa119
返信ありがとうございます!
お忙しいということなので、他の方にお願いできないか聞いてみます。

@machida machida requested review from komagata and removed request for komagata July 4, 2025 07:35
@kushimegu
Copy link
Copy Markdown
Contributor Author

@matuaya
お疲れ様です!
こちらのレビューをお願いできませんか?

@matuaya
Copy link
Copy Markdown
Contributor

matuaya commented Jul 4, 2025

@kushimegu
お疲れさまです!返信遅れて本当に申し訳ありません。
お声がけいただきながら恐縮ですが、私自身まだ issue を一つも行なっておらず、どのようにレビューを適切に行うのか理解できていないです💦(次回のMTGで質問したいと思っていたところでした・・)
大変申し訳ないのですが、今回は他の方にご依頼いただけますでしょうか?
力不足でご迷惑をおかけし申し訳ありません💦

@kushimegu
Copy link
Copy Markdown
Contributor Author

@matuaya
そうですよね、チーム開発始まっていきなりですみません
一応メンバーレビューを受けた時はIssueの変更確認方法を見て動作とコードを確認して何かあればコメント、良ければApproveするという流れです!
今回は他の方をあたってみます、返信ありがとうございます

@kushimegu
Copy link
Copy Markdown
Contributor Author

@kitarou888
お疲れ様です!
こちらのレビューをお願いできませんか?

@kitarou888
Copy link
Copy Markdown
Contributor

@kushimegu
こんにちは!
はい、別のレビューを抱えていますが対応可能です!
ただ今週末は学習の時間が取れないためそれまでにレビューをしたいと思いますが、最悪来週以降になる可能性もあるため、その点ご了承いただければと思います🙏

@kushimegu
Copy link
Copy Markdown
Contributor Author

@kitarou888
ありがとうございます!急いではないのでお時間がある時で大丈夫です
一応連絡事項で、バグなのかこのPRでReviewersを変えられない状況になっていて、今の所Reviewersに名前が入っていないということだけお伝えしておきます

@kitarou888 kitarou888 self-requested a review July 7, 2025 11:50
@kitarou888
Copy link
Copy Markdown
Contributor

@kushimegu
レビュアーに私の名前を入れらなかったとのことですが、私の方で自分でレビュアーに設定できましたので、一応お知らせしておきますね。(sharoaさんのレビュアーを外すことはできませんでした)

また、変更確認手順を行いましたが、
4. 未解決・解決済み・全ての質問のソートを行えることを確認する
5. [OS X Mountain Lionをクリーンインストールするの質問一覧ページ](http://localhost:3000/practices/315059988/questions)にアクセスし、一覧表示と全て・解決済み・未解決の質問のソートを行えることを確認する
のところ、

  • ソートを自分で行う方法がわかりませんでしたので教えていただけるとうれしいです
  • それとも「ソートが行えていることを確認する」の意味でしょうか?
    もしそうであれば、「公開日時・更新日時」(またはタイトル等それ以外)のどちらで「降順・昇順」どちらでソートされている挙動が正しいでしょうか?例えば「解決済み」のQ&Aの場合、もし更新日時でソートされるのであれば、今回のテストデータがすべて同じのため、確認が難しいです・・・。
    mainブランチとの比較をすべてのページで行うことをレビュアーがやるのはすみません、ちょっと負荷的に厳しいかなと思いました。
image

ソートの確認方法をご検討いただけるとうれしいです🙇‍♂️

コードのレビューは明日以降に行いますので、お時間をいただけるとうれしいです!

@kushimegu
Copy link
Copy Markdown
Contributor Author

@kitarou888
すみません、ソートという言葉の使い方がよくなかったです
上のコメントも編集したのですが、未解決・解決済み・全てをクリックした時に対応した質問一覧に切り替わることを確認する、ということでした

@kitarou888
Copy link
Copy Markdown
Contributor

@kushimegu
文言変更確認しました。
私がちょっとエスパーしすぎてしまったみたいですね💦

Issueページで駒形さんが「質問の表示順序を維持すること」と書かれているので、そちらのチェックを kushimegu さんの方でしていただけているのでしたら、私からの動作確認はOKかなと思います。

コードレビューはもう少しお待ちいただければと思います〜。

Copy link
Copy Markdown
Contributor

@kitarou888 kitarou888 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kushimegu
確認が大変遅くなり申し訳ありませんでした。
コードを確認しましたが、特に問題は見られませんでしたので私からは Approve とさせていただきます!

@kushimegu
Copy link
Copy Markdown
Contributor Author

@kitarou888
レビューありがとうございました!

@komagata
メンバーレビューが終わりましたので確認をお願いいたします。

@machida machida requested review from machida and removed request for machida July 24, 2025 07:07
@machida
Copy link
Copy Markdown
Member

machida commented Jul 24, 2025

@sharoa119 @kushimegu @kitarou888
僕もやってみたのですが、レビュワーから外すことができませんでした。
試しにmachidaをレビュワーに追加してみたのですが、それは取り消せるんですよね〜。
sharoa119さんのは取り消せない状況です。
なので、sharoa119さんもアプローブしてしまうのが良さそうです。

Copy link
Copy Markdown
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させて頂きました。OKです〜🙆‍♂️

@komagata komagata merged commit 23ecb27 into main Jul 24, 2025
21 checks passed
@komagata komagata deleted the chore/question_index_vue_to_vanilla_js branch July 24, 2025 07:26
@github-actions github-actions bot mentioned this pull request Jul 24, 2025
87 tasks
@kushimegu
Copy link
Copy Markdown
Contributor Author

@machida @sharoa119
machidaさんありがとうございます!Awaitingの状態でもマージできたようで、Fjord Choiceの方も一応それで表示がでなくなったみたいですが、Approveで対応していただいた方が良いですか?

@sharoa119
Copy link
Copy Markdown
Contributor

@kushimegu さん @machida さん
お疲れ様です!
私も今こちらを確認していたのですが、数分前に駒形さんが確認してマージしてくださっていて、
Approveの表示が出ていない状態です。ので、このままでも大丈夫そうなきがしていますがどうでしょう?

この度は私のアカウントがお邪魔をしてしまってすみませんでした🙇‍♀️

@machida
Copy link
Copy Markdown
Member

machida commented Jul 24, 2025

@sharoa119 @kushimegu @kitarou888
今、Fjord Choice を確認したら、sharoaさんのレビュー依頼は0になってました。なので、このままで大丈夫ですー

今回はGitHubのバグを踏んだんだと思います。お気になさらず🙏

@komagata
Copy link
Copy Markdown
Member

komagata commented Aug 2, 2025

@kushimegu CloseしているIssueにすみません。ちょっと質問があるのですが、このPRでは下記のファイルが削除されていないようですがこれはまだ他のどこからか使われている感じでしょうか?

  • app/javascript/components/question.vue
  • app/javascript/components/questions.vue

(vue.jsの廃止のためにvueファイルを定期的に検索して、あとどれぐらいで廃止できそうか確認しているためです)

@kushimegu
Copy link
Copy Markdown
Contributor Author

@komagata
すみません、削除し忘れていたようです。
改めて確認したところ2つとも削除して問題ありませんでした。

@komagata
Copy link
Copy Markdown
Member

@kushimegu そのファイルが現在どうなっているのかの確認と、まだ存在していたら削除のPRを作成いただければありがたいです。

@kushimegu
Copy link
Copy Markdown
Contributor Author

#9048 にvueファイル削除のPRを作成しました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants