🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

1812閲覧

link_toに関する質問です。

sn.jr

総合スコア53

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2019/12/17 03:06

編集2019/12/17 05:37

現在改訂4版基礎RUBY ON RAILSのchapter10をやっているのですが、著書通りにしているはずなのにエラーが出てしまいます。

##エラー内容

undefined method `entries_path' for #<#<Class:0x00007fbcce3ad788>:0x00007fbcce5ff8d8>
Rendered shared/_header.html.erb (Duration: 139.1ms | Allocations: 89325) Completed 500 Internal Server Error in 153ms (ActiveRecord: 0.6ms | Allocations: 99535) ActionView::Template::Error (undefined method `entries_path' for #<#<Class:0x00007fbcce3ad788>:0x00007fbcce5ff8d8>): 11: <ul> 12: <%= menu_link_to 'TOP', :root%> 13: <%= menu_link_to '投稿', :articles %> 14: <%= menu_link_to 'ブログ', :entries %> 15: <% if current_member%> 16: <%= menu_link_to '会員名簿', :members%> 17: <%= menu_link_to '管理ページ', :members%> app/helpers/application_helper.rb:9:in `block in menu_link_to' app/helpers/application_helper.rb:8:in `menu_link_to' app/views/shared/_header.html.erb:14 app/views/layouts/application.html.erb:15

該当箇所

<%= menu_link_to 'ブログ', :entries %>
module ApplicationHelper def page_title title = "Wakatta" title = @page_title + "-" + title if @page_title title end def menu_link_to(text, path, options = {}) content_tag :li do condition = options[:method] || !current_page?(path) link_to_if(condition, text, path, options) do content_tag(:span, text) end end end end

rails routes

Prefix Verb URI Pattern Controller#Action entries_index GET /entries/index(.:format) entries#index entries_show GET /entries/show(.:format) entries#show entries_new GET /entries/new(.:format) entries#new entries_edit GET /entries/edit(.:format) entries#edit passwords_edit GET /passwords/edit(.:format) passwords#edit accounts_show GET /accounts/show(.:format) accounts#show accounts_edit GET /accounts/edit(.:format) accounts#edit top_index GET /top/index(.:format) top#index search_members GET /members/search(.:format) members#search member_entries GET /members/:member_id/entries(.:format) entries#index members GET /members(.:format) members#index POST /members(.:format) members#create new_member GET /members/new(.:format) members#new edit_member GET /members/:id/edit(.:format) members#edit member GET /members/:id(.:format) members#show PATCH /members/:id(.:format) members#update PUT /members/:id(.:format) members#update DELETE /members/:id(.:format) members#destroy root GET / top#index about GET /about(.:format) top#about session DELETE /session(.:format) sessions#destroy POST /session(.:format) sessions#create edit_account GET /account/edit(.:format) accounts#edit account GET /account(.:format) accounts#show PATCH /account(.:format) accounts#update PUT /account(.:format) accounts#update edit_password GET /password/edit(.:format) passwords#edit password GET /password(.:format) passwords#show PATCH /password(.:format) passwords#update PUT /password(.:format) passwords#update articles GET /articles(.:format) articles#index POST /articles(.:format) articles#create new_article GET /articles/new(.:format) articles#new edit_article GET /articles/:id/edit(.:format) articles#edit article GET /articles/:id(.:format) articles#show PATCH /articles/:id(.:format) articles#update PUT /articles/:id(.:format) articles#update DELETE /articles/:id(.:format) articles#destroy

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

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

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

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

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

guest

回答1

0

ベストアンサー

本を持っていないためわからないのですが、
エラー内容としては、パスの指定の仕方またはパス自体が間違っているということです。
↓のコードの :entries の部分ですね。

<%= menu_link_to 'ブログ', :entries %>

考えられる原因としては
①「:」がいらない(自分がlink_toを使う時には付けてないです)
②パス自体が間違っている(下の記事等を参考に「rake routes」でパスを確認してみてください)
link_toはRailsの基本!これであなたも必ずlink_toが書ける!

menu_link_toアクションを把握しきれていないので見当違いでしたらすみません。

投稿2019/12/17 03:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sn.jr

2019/12/17 04:55

ご回答ありがとうございます!ご指摘の箇所確認したのですがエラーのままでした。もしお手数でなければ、上記にmenu_link_toを載せているのでご覧いたただけると幸いです。
退会済みユーザー

退会済みユーザー

2019/12/17 05:09

https://suginoy.hatenadiary.org/entry/20110923/p1 すみません「:」を付けるやり方は正しいみたいです。(似たような記事を見つけたので載せておきます) 違うのはおそらく「entries」なんですが… 一度「rake routes」でパスを出力し、載せてもらえますか? ※「rake routes」が分からない場合は回答欄のリンク先に説明があります。macだとターミナル、windowsだとコマンドプロンプト(?)に打ち込めば出てきます
sn.jr

2019/12/17 05:38

ありがとうございます!投稿に載せておきましたのでご覧いただけると幸いです!
退会済みユーザー

退会済みユーザー

2019/12/17 05:48

ありがとうございます。 載せていただいたルート一覧のGETの左にあるもの(entries_indexとかentries_showとか)が「:」以降に書くものになります。 逆にいうと、現在記述している「:entries」は一覧のなかに無いのでエラーが起こってます。 link_toの遷移先はどちらになりますか? 遷移先をルート一覧の中で確かめてパスを記述すれば直ると思います。
maisumakun

2019/12/17 05:49

entriesだけindexのルーティング名がおかしいですね。resourcesを使わずに個別に定義してしまったのかもしれないですね。
sn.jr

2019/12/17 08:43

なるほど!丁寧なご指導ありがとうございます!:entriesがないというヒントを受けて、routesを見たらそこに記載漏れがあったようです。おかげさまで解決いたしました!ご協力、コメントしていただいた方々誠にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問