質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

591閲覧

Railsエンジン|isolate_namespaceを利用したgemでroot toを設定したい

no1knows

総合スコア3365

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/02/10 12:28

編集2020/02/13 04:54

前提・実現したいこと

PasswordlessというGemを利用してroot toをsign_inページに割り当てたいのですが思うように設定できません。

設定したいRootのURL

http://localhost:3000/users/sign_in
このページはきちんと設定できており、ログインできます。

rootの割当てがうまくいかない理由

Passwordlessのissues#30や、issue#22などで記載しているのですが、RailsエンジンのIsolate namespaceというものはルーティングを混乱させるものだそうです。

Isolating namespace adds a bit of confusion around the routes.

(作者さんもできる限り取り除きたいと考えているようですが、今のところ実現できていません。)

困ったこと

RailsエンジンおよびIsolate namespaceの内容を読んでみましたが、今の僕のレベルだと理解が難しくてうまく把握できず、行き詰まってしまいました。

Railsガイド:Railsエンジン入門

試したRoot設定・エラーメッセージ

Isolate namespaceを利用したルーティングの設定方法がわからないため、手当り次第、設定してみましたが、うまくいきませんでした。

設定 :root to: 'passwordless/sessions#new'
エラー:param is missing or the value is empty: authenticatable

設定 :root to: users.sign_in_path
エラー:undefined local variable or method 'users' for #<ActionDispatch::Routing::Mapper:0x00007faa61680778>

設定 :root to: 'users/sessions#new'
エラー:uninitialized constant Users::SessionsController

補足情報(FW/ツールのバージョンなど)

Passwordless gem https://github.com/mikker/passwordless

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mugheart

2020/02/10 13:06

> param is missing or the value is empty: authenticatable このエラーメッセージを読む限りroutes.rbの書き方云々ではないような気がします。
no1knows

2020/02/10 13:26

確認いただきありがとうございます。 下記のページがログイン画面となっており、そのページをrootに置きたいと考えています。 http://localhost:3000/users/sign_in もう少し公式ページのissueを読み込んでみたいと思います。
Mugheart

2020/02/13 02:31

迷走してるようなので改めて言いますが、最初のエラー param is missing or the value is empty: authenticatable はroutes.rbで発生しているんですか? コントローラのStrongParametersで発生するエラーのような気がします。
no1knows

2020/02/13 03:27

StrongParametersで発生していました。 質問を見直して、自分が迷走していることがよくわかりました。。。ありがとうございます。 root to: 'passwordless/sessions#new'のテスト結果を書いたのかわからないのですが、現状は下記のような形です。 直接下記ページを表示するとsin_inページは表示され、ここからログインできる。 http://localhost:3000/users/sign_in root to: 'users/sign_in'とすると、routes.rbでエラー。 エラー:Missing :controller key on routes definition, please check your routes. root to: 'users/sessions#new'とすると、active_support/inflector/methods.rb.rbでエラー。 エラー:uninitialized constant Users::SessionsController
Mugheart

2020/02/13 05:26 編集

root の :to には存在するコントローラのアクション名を渡す必要があります。 URLを指定するのではなく、アクション名を指定します。 頑なにroutes.rbを弄るのはなぜでしょう? 不要なエラーを生み出しているだけなような気がします。 routes.rbの設定に原因がある見当がついているのであれば、 その旨を詳しく記事内に追記してください。 > StrongParametersで発生していました。 であれば見るべきところはroutes.rbではなくControllerもしくはViewなのでは? paramsを受け取る部分、もしくはパラメータ生成部分に問題があるはずです。
guest

回答1

0

詳しい状況がわからないので直接の回答ではなく申し訳ないのですが、
エラーの再現方法をお伝えしておきます。
エラー解決の参考にしていただけると幸いです。

rb

1params = ActionController::Parameters.new 2params.require(:authenticatable) 3# ActionController::ParameterMissing: param is missing or the value is empty: authenticatable

値が存在しないキーでパラメータを絞り込もうとすると発生するエラーです。
GETリクエストであればURLにパラメータが渡ってないとかではないですか?
必要なパラメータを渡してやる等すれば解決しそうに思うのですが...。

投稿2020/02/13 05:36

編集2020/02/13 05:38
Mugheart

総合スコア2349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問