2017-01-18 3 views
1

私はSkillcrushでRubyコースをやっています(まだ大変なアマチュアです)。私のコードだけで動作しないコースの一部に出くわしました。Sinatra App Routesが期待通りに動作しない

アプリはシナトラを使用し、localhost:9292/peopleに行くときviews/people/index.erbを表示することになっているが、代わりにそれは間違った拡張子がlocalhost:9292/(通常は日付形式の後に与えられている必要がありますエラーページになりますが、何か他のものであればエラーが発生するはずです)。

コースの途中でコンピュータを切り替える必要があったため、セットアップに関連している可能性があります。私が提供したコードを使用して、diff --brief -r dir1/ dir2/を使用して矛盾をチェックし、Gemfile.lockファイルの一部しか見ることができません。私は2.0 Rubyより前の宝石に関する問題のためにRuby 2.4を使用していますが、これが当てはまるのか疑問に思っていますか?

私のコードはhereです。

誰も眩しい問題を見ることはできますか?

+1

ここにコードを記入してください。あなたはreadmeファイルをsinatraにデフォルトで –

+0

にプッシュしています。フォルダは 'views'ですが、' view'を持っています –

+0

これで残りのコードがアップロードされました。 @オピニオン、それはタイプミスでした。 –

答えて

2

私は、Sinatraがlocalhost:9292/peopleのパターンと、get '/people'の代わりにインデックスコントローラget '/:birthdate'の最初のルートに一致していると信じています。 Sinatraは要求を受け取り、順番に各ルートを確認し、一致する最初のものが要求を処理します。

  • (それはあなたがして適切に誕生日へのリンクを変更する必要があります動作するかどうか)get '/birthdate/:birthdate'get '/:birthdate'を変更してみてください。これをテストするために

または

  • コメントアウト生年月日ルート

または

  • 動きのすべてのルートと同じファイルにし、彼らが見るには配置されている順序を変更しますどのようにパターンマッチングが起こっているかを感じる。
+0

それは私が思ったことですが、私はコースに従っていて、他の人のために働いたようです。私は自分のコードを変更すると、コースの記録を失うことに少し気になります。 –

+0

私は、それがエラーの原因であるかどうかを確認するために私の提案の1つを試してみると、ちょっと不思議です(2番目は私が開始する場所になります)。また、最初の提案はかなり良質な変更ですが、私はそれがずっと前にあなたを旅行するとは思わない。基本的に、コースで '/ <%=#{birthdate}%> 'にリンクするように要求された場合、'/birthdate/<%=#{birthdate}%> ' – abax

+0

に変更するだけで、それは私が仮定したものです。それは明らかに、ユーザがドメインの直後に生年月日を入力することを許しません。コース上の他の誰も同じ問題を抱えていないようであるとき、なぜそれがうまくいかないのかちょうど奇妙なことです。 –

関連する問題