Laravel 5.2 NotFoundHttpException in RouteCollection.php line 161: (showアクション使用)
解決済
回答 1
投稿
- 評価
- クリップ 1
- VIEW 7,338
前提・実現したいこと
Laravel 5.2でブログ投稿サイトを作っています。
トップページから記事の詳細にアクセスできる機能を実装しようと試みたところ表題のエラーが発生しました。
発生している問題・エラーメッセージ
NotFoundHttpException in RouteCollection.php line 161:
なお、php artisan route:list
でルーティングを確認したところ、routes.phpにおそらく間違いなく記載しているのにも関わらず、showアクションが表示されていません。
**ArticlesController.php**
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Article;
use Auth;
class ArticlesController extends Controller {
public function __construct() {
$this->middleware('auth', array('except' => 'index'));
}
public function index() {
$articles = Article::orderBy('id', 'DESC')->paginate(5);
return view('articles.index')->with('articles', $articles);
}
public function create() {
return view('articles.create');
}
public function store(Request $request) {
Article::create(
array(
'category' => $request->category,
'title' => $request->title,
'image_url' => $request->image_url,
'text' => $request->text,
'user_id' => Auth::user()->id
)
);
return view('articles.store');
}
public function show($id) {
$article = Article::find($id);
return view('articles.show')->with('article', $article);
}
}
**routes.php**
<?php
use App\Http\Controllers\ArticlesController;
Route::group(['middleware' => ['web']], function () {
Route::auth();
Route::get('/', 'ArticlesController@index');
Route::get('/articles', 'ArticlesController@index');
Route::get('/articles/{id}', 'ArticlesController@show');
Route::get('/articles/create', 'ArticlesController@create');
Route::post('/articles/store', 'ArticlesController@store');
});
**コマンドライン**
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
| | GET|HEAD | / | | App\Http\Controllers\ArticlesController@index | web |
| | GET|HEAD | articles | | App\Http\Controllers\ArticlesController@index | web |
| | GET|HEAD | articles/create | | App\Http\Controllers\ArticlesController@create | web,auth |
| | POST | articles/store | | App\Http\Controllers\ArticlesController@store | web,auth |
| | POST | login | | App\Http\Controllers\Auth\AuthController@login | web,guest |
| | GET|HEAD | login | | App\Http\Controllers\Auth\AuthController@showLoginForm | web,guest |
| | GET|HEAD | logout | | App\Http\Controllers\Auth\AuthController@logout | web |
| | POST | password/email | | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\PasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token?} | | App\Http\Controllers\Auth\PasswordController@showResetForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\AuthController@register | web,guest |
| | GET|HEAD | register | | App\Http\Controllers\Auth\AuthController@showRegistrationForm | web,guest |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
もしかしたらですが、Route cacheを使っていたりしませんか?実はキャッシュにルーティングの情報が残っていて、それが原因で、反映されていない、という事はあり得ますか?php ./artisan route:clear
でキャッシュをクリアできる様ですが、この結果を確認頂けますか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.13%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
motuo
2016/12/15 11:46
どの画面からどの様なアクションをしたら上記のエラーになったのでしょうか?遷移元のViewを追記して頂けると良いかと思います。(indexは表示出来ていて、そこから1件選択して遷移しようとした時にエラーになりましたか?)
spellbound
2016/12/15 13:33
indexページは表示できています。おっしゃる通り、ブログ記事をクリックして詳細ページに遷移しようとするとエラーが起こります。つまり、showアクションでエラーが起きています。「php artisan route:list」でルーティングを確認しましたが、showの記述が見当たらなかったので、原因はそこにあるのではないかと考えています。ちなみに、詳細ページのパスを「articles/{id}」としています。エラーが起きているURLを確認すると、「http://localhost:8000/articles/26」となっています。一応、hrefの書き方はうまくいっているようです。
Archsted
2016/12/15 13:52
php artisan route:scan は試しましたか?